擦拭绳子但保留其中间部分

MrS*_*kly 2 javascript regex string perl replace

使用像"HorsieDoggieBirdie"这样的字符串,是否有一个非捕获正则表达式替换会杀死"Horsie"和"Birdie",但保持"Doggie"完好无损?我只能想到一个捕获解决方案:

s/(Horsie)(Doggie)(Birdie)/$2/g
Run Code Online (Sandbox Code Playgroud)

是否有非捕获解决方案,如:

s/Horsie##Doggie##Birdie//g
Run Code Online (Sandbox Code Playgroud)

其中##是正则表达式代码的一些组合?具体问题在JavaScript(innerHTML.replace)中,但我也会采用Perl建议.

msc*_*cha 5

你不必捕获HorsieBirdie.

s/Horsie(Doggie)Birdie/$1/g;
Run Code Online (Sandbox Code Playgroud)

类似的东西也适用于Javascript.这可能和它一样有效,并且至少和使用环视断言一样快; 虽然如果你想确切知道,你应该对它进行基准测试.(结果当然取决于所讨论的小跑,小狗和小鸟.)

强制性免责声明:您应该知道在HTML中使用正则表达式时会发生什么 ...