模式匹配以提取字符串匹配条件

时间:2015-10-19 00:42:13

标签: regex r

我正在尝试提取与字符串中的模式匹配的字符串。有意义:

 x <- "this.is.fairly//Whatit.is/path/IDbeginUntilhere7/seenit"

正则表达式的目标是返回:IDbeginUntilhere。我试过这个:

 str <- regmatches(x, gregexpr("^I.*7$", x))

我理解它不起作用,因为I位于字符串的中间。这个问题可能过于简单,但我很感激我能得到的任何帮助。

1 个答案:

答案 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