【问题标题】:Matching pattern multiple times in same string with regex [duplicate]使用正则表达式在同一字符串中多次匹配模式[重复]
【发布时间】:2015-03-28 20:02:24
【问题描述】:

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

不幸的是,似乎发生的情况是,一旦匹配了第一个模式,字符串的那部分就被“删除”了,而第二个模式将不会匹配。

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

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

【问题讨论】:

标签: regex r


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多