RegEx在第一次出现后匹配所有出现的字符*?

Jim*_*ler 3 regex objective-c

例如,如果我想在输入字符串中匹配'w'

爱德华伍德沃德

第二个单词中的两个'w'应该匹配,而不是第一个单词中的那个.

我有一个问题,解决方案可能涉及"负面看待",但却无法获得任何有效的解决方案.

(我正在使用Objective C和正则表达式替换方法,NSMutableString但我也很高兴听到任何正则表达式实现的解决方案.)

Tim*_*ker 9

你的问题是,你不仅需要看后面(一些正则表达式根本不支持),而是在lookbehind断言中进行无限重复(例如,只支持很少的口味,比如.NET).

因此,.NET-或JGSoft兼容的正则表达式

(?<=w.*)w
Run Code Online (Sandbox Code Playgroud)

不适用于Objective C,Python,Java等.

所以你需要分几步完成:首先在第一个之后找到字符串w:

(?<=w).*
Run Code Online (Sandbox Code Playgroud)

(如果你有支持背后的支持),那么拿下比赛并在w里面搜索.

如果不支持lookbehind,则搜索w(.*)并将以下搜索应用于捕获组1($1)的内容.


Bar*_*ers 5

要将每个N-th "w"(where N > 1)替换"X"为例如,您可以搜索模式:

(?<=w)(.*?)w
Run Code Online (Sandbox Code Playgroud)

并将其替换为:

$1X
Run Code Online (Sandbox Code Playgroud)