正则表达式替换两个词之间

Regex replace in between two words

示例文本:

This is my car, I don't like it, because it is slow. This is my car, SomeRandom24324<>, it is slow. This is my car, how about you and me..., because it is slow.

我想删除 "This is" 和 "is slow" 之间的所有内容。

我试过 (?<=This is)(.*?)(?=is slow),但它只删除了第一次出现,我得到:

This isis slow. This is my car, SomeRandom24324<>, it is slow. This is my car, how about you and me..., because it is slow.

其余事件仍然存在。

如你所知,我只想拥有:

This isis slow. This isis slow. This isis slow.

PS:有什么学习正则表达式的好书吗?

正则表达式没问题。您需要告诉您将该正则表达式放入的任何内容(可能是 replace 调用)以替换所有匹配项,而不仅仅是一个匹配项。这不是正则表达式的一部分,而是替换 instruction/call/whatever.

的标志

你的正则表达式没问题。我会尝试启用 dotall 修饰符来强制点跨换行。

String result = Regex.Replace(input, @"(?s)(?<=This is).*?(?=is slow)", "");

就学习正则表达式而言,我将从这里开始:Regular-Expressions.infoRexEgg

执行此操作取决于您使用的语言。在 perl 中,我会使用使用正则表达式的替代函数,例如。 $line=~ s/regex_with_2_groups/"$1 whatever-u-want $2"/g,但是在 java 中我可能会使用 String.replaceFirst() 或 String.replaceAll 并且在 python re.sub()。一种方法是匹配'(2save1)toRemove(2save2)'并输出"group1 whatever-u-want group2".

精通正则表达式和正则表达式指南是很好的参考资料。请参阅 http://www.regular-expressions.info/ for regex deatails of all major languages that have them and software for testing and analyzing regexes and http://www.regexr.com/ 有一个免费的在线工具,用于学习、构建和测试正则表达式。