我想使用正则表达式在最后两个字符串之间提取字符串。我似乎无法想出正确的表达方式,如果有人可以帮助我那会很棒。
说字符串是:aa / bbbb / ccccc / eeee / fffff.jpg,我想提取出来" eeee"。
谢谢。
答案 0 :(得分:2)
我知道你说你想使用正则表达式但是对于那些寻找解决方案但不要求它成为正则表达式的人,你可以通过拆分字符串来实现这一点:
["aa/bbbb/ccccc/eeee/fffff.jpg", "eeee"]
答案 1 :(得分:1)
由于您只关心 last 斜杠集,所以首先要匹配任何内容
library(png)
img <- readPNG('~/Downloads/mens_room_clip_art_9332/Mens_Room_clip_art_small.png')
str(img)
# num [1:100, 1:100, 1:4] 1 1 1 1 1 1 1 0 0 0 ...
require(grid)
#Loading required package: grid
male <- rasterGrob(img)
img <- readPNG('~/Downloads/ladies_room_clip_art_16926/Ladies_Room_clip_art_small.png')
female <- rasterGrob(img)
df = data.frame(x=rep(1:4,2), y=c(1,1,2,4,6.5,5,5.5,4.8), g=rep(c("s","m"),each=4))
p = ggplot(df, aes(x, y, group=g)) +
geom_line() +
theme_bw()
a=0.2
for (i in rownames(df[df$g=="s",])) {
p = p + annotation_custom(male, df[i,"x"]-a,df[i,"x"]+a,df[i,"y"]-a,df[i,"y"]+a)
}
b=0.2
for (i in rownames(df[df$g=="m",])) {
p = p + annotation_custom(female, df[i,"x"]-b,df[i,"x"]+b,df[i,"y"]-b,df[i,"y"]+b)
}
png();print(p);dev.off()
那么你想要一个字面斜杠
.*
(因为斜线将终止js正则表达式而被转义)
现在你想要下一个斜线,这意味着不是斜线并且_必须是某个(一个或多个),我们将把它放在一个捕获组中,以便你可以提取它。
\/
然后是另一个字面斜杠
([^/]+)
那么其他什么(文件名?),再次,不包括斜线
\/
将所有这些放在一起会给你正则表达式
[^/]+
和
/.*\/([^/]+)\/[^/]+/
产生
"aa/bbbb/ccccc/eeee/fffff.jpg".match(/.*\/([^/]+)\/[^/]+/);
...... eeee 被捕获。