Regex 模式匹配以提取字符串匹配条件
我试图提取与字符串中的模式匹配的字符串。有意义的是:Regex 模式匹配以提取字符串匹配条件,regex,r,Regex,R,我试图提取与字符串中的模式匹配的字符串。有意义的是: x <- "this.is.fairly//Whatit.is/path/IDbeginUntilhere7/seenit" 我理解它不起作用,因为 i 位于字符串的中间。这个问题可能太简单了,但我希望能得到任何帮助。很明显,主要问题是锚:字符串的开头^和字符串的结尾$ 第二个问题是贪心点,它也将在/分隔的子部分之间匹配(即,将匹配整个Id7/不匹配7,而不是Id7) 你需要使用类似于 str <- regmatches(x,
x <- "this.is.fairly//Whatit.is/path/IDbeginUntilhere7/seenit"
我理解它不起作用,因为<代码> i <代码>位于字符串的中间。这个问题可能太简单了,但我希望能得到任何帮助。
很明显,主要问题是锚:字符串的开头^
和字符串的结尾$
第二个问题是贪心点,它也将在/
分隔的子部分之间匹配(即,将匹配整个Id7/不匹配7
,而不是Id7
)
你需要使用类似于
str <- regmatches(x, gregexpr("I[^/]*7", x))
请参见省略^和$。它们指定模式从字符串的开头开始,并在字符串的结尾结束。谢谢。那么问题真的很简单!如果是非贪婪的
str更好,我会使用stringr
软件包,因为它更干净、更容易阅读:str_extract(x,“I.*7”)
。谢谢各位,你们能发布建议来结束这个问题吗。@马里亚诺:我纠正了问题中的一个错误。模式是IDBEGINUNTHERE
,我认为条件以I
开始,以7
结束就足够了。我们还可以要求字符串位于/
之间。
str <- regmatches(x, gregexpr("I[^/]*7", x))
str <- regmatches(x, gregexpr("I[^/]*(?=7)", x, perl=TRUE))