使用正则表达式在相同的字符串中多次匹配模式

时间:2015-03-28 20:02:25

标签: regex r

我试图在字符串"8ab|ab8"中查找特定模式"8ab8"的所有匹配项。所以我尝试了R命令gregexpr("8ab|ab8","8ab8"),希望得到一个起始位置为c(1,2)的返回向量。

不幸的是,似乎发生的事情是,一旦第一个模式匹配,该字符串的那部分被删除"并且第二种模式不匹配。

例如,一次" 8ab"匹配," 8ab8"成为" 8"当R尝试匹配" ab8"在" 8"中,找不到模式。我知道这是因为gregexpr("8ab|ab8","8ab ab8")工作正常,并将模式匹配的起始位置返回为c(1,5)

问题是,如何在第一种情况下多次匹配相同的模式?

1 个答案:

答案 0 :(得分:1)

使用perl正则表达式:perl = TRUE。 (有关perl正则表达式的信息,请参阅?regex)

 gregexpr("(?=8ab)|(?=ab8)","8ab8",perl=T)