我正在尝试提取与字符串中的模式匹配的字符串。有意义:
x <- "this.is.fairly//Whatit.is/path/IDbeginUntilhere7/seenit"
正则表达式的目标是返回:IDbeginUntilhere
。我试过这个:
str <- regmatches(x, gregexpr("^I.*7$", x))
我理解它不起作用,因为I
位于字符串的中间。这个问题可能过于简单,但我很感激我能得到的任何帮助。
答案 0 :(得分:2)
很明显,主要问题是锚点:字符串^
的开头和字符串$
的结尾。
次要问题是贪婪点也会在/
分隔的子部分中匹配(即匹配整个Id7/Not-to-match7
而不是Id7
)。
您需要使用类似
的内容str <- regmatches(x, gregexpr("I[^/]*7", x))
请参阅regex demo
如果您不需要7
,则需要使用前瞻和类似Perl的正则表达式:
str <- regmatches(x, gregexpr("I[^/]*(?=7)", x, perl=TRUE))
请参阅another demo