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



我试图提取匹配字符串中的模式的字符串。说明:

 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))

查看另一个演示

最新更新