例如,如果我尝试匹配输入字符串中的'w'
爱德华伍德沃德
第二个单词中的两个'w'应该匹配,而不是第一个单词中的那个。
我有一个问题,解决方案可能涉及'负面看待',但是无法获得任何有效的解决方案。
(我正在使用Objective C和NSMutableString
上的正则表达式替换方法,但我也很高兴听到任何正则表达式实现的解决方案。)
答案 0 :(得分:9)
你的问题是,你不仅需要看后面(一些正则表达式根本不支持),而是在lookbehind断言中进行无限重复(例如,只支持很少的口味,比如.NET)。
因此,.NET-或JGSoft兼容的正则表达式
(?<=w.*)w
不适用于Objective C,Python,Java等。
所以你需要分几步完成:首先在第一个w
之后找到字符串:
(?<=w).*
(如果你有支持背后的支持),那么拿下比赛并在其中搜索w
。
如果不支持lookbehind,则搜索w(.*)
并将以下搜索应用于捕获组1的内容($1
)。
答案 1 :(得分:4)
要用N
替换每个"w"
- N > 1
("X"
},您可以搜索该模式:
(?<=w)(.*?)w
并将其替换为:
$1X