示例文字:
这是我的车,我不喜欢它,因为它很慢。这是我的车,SomeRandom24324<>,它很慢。这是我的车,你和我怎么样......因为它很慢。
我想删除之间的所有内容"这是"和"很慢"。
我尝试了(?<=This is)(.*?)(?=is slow)
,但它只删除了第一次出现,我得到了:
这很慢。这是我的车,SomeRandom24324&lt;&gt;,它很慢。这是我的车,你和我怎么样......因为它很慢。
其余的事件仍然存在。
如你所知,我只想拥有:
这很慢。这很慢。这很慢。
PS:学习正则表达式的好书?
答案 0 :(得分:2)
你的正则表达没问题。我会尝试启用dotall修改器来强制点穿过换行符。
String result = Regex.Replace(input, @"(?s)(?<=This is).*?(?=is slow)", "");
就学习正则表达式而言,我将从这里开始:Regular-Expressions.info - RexEgg
答案 1 :(得分:1)
正则表达式很好。你需要告诉你把那个正则表达式放入(可能是一些replace
调用)以替换所有匹配,而不仅仅是一个。这不是正则表达式的一部分,而是替换指令/调用/其他的标志。
答案 2 :(得分:0)
这样做取决于您使用的语言。在perl中,我将使用使用正则表达式的替换函数,例如。 $ line = ~s / regex_with_2_groups /&#34; $ 1无论你想要$ 2&#34; / g,但在java中我可能会使用String.replaceFirst()或String.replaceAll以及python re.sub()。一种方法是匹配&#39;(2save1)toRemove(2save2)&#39;输出&#34; group1无论你想要什么group2&#34;。
精彩的参考资料是掌握正则表达式和正则表达式食谱。有关具有它们的所有主要语言的正则表达式以及用于测试和分析正则表达式的软件,请参阅http://www.regular-expressions.info/,http://www.regexr.com/有一个免费的在线工具,用于学习,构建和测试正则表达式。