我试图提取匹配字符串中的模式的字符串。说明:
x <- "this.is.fairly//Whatit.is/path/IDbeginUntilhere7/seenit"
正则表达式的目标是返回:IDbeginUntilhere
。我试过了:
str <- regmatches(x, gregexpr("^I.*7$", x))
,我理解它不起作用,因为I
位于字符串的中间。这个问题可能太简单了,但如果你能帮助我,我会很感激的。
很明显,主要问题是锚:字符串^
的开始和字符串$
的结束。
第二个问题是贪心点也将匹配跨/
分隔的子部分(即将匹配整个Id7/Not-to-match7
而不是Id7
)。
你需要使用像
这样的东西str <- regmatches(x, gregexpr("I[^/]*7", x))
参见regex demo
如果您不需要7
,则需要使用提前查找和类似perl的regex:
str <- regmatches(x, gregexpr("I[^/]*(?=7)", x, perl=TRUE))
查看另一个演示