2013-09-23 85 views
0

匹配我有一个多行字符串崇高文本2的正则表达式后向引用

一些测试
字符串
这里

我使用这个正则表达式找到它(Some\s.*)(.|\n)* &与\1\2更换

而不是得到相同的文本回来,我得到

一些测试电子邮件

为什么没有第二个反向引用的工作?有没有更好的方式来指定在正则表达式多,而不是(.|\n)*

PS:在Windows

更新使用文本崇高2:我看读书杰里的回答后,我的错误。

+0

的Windows =='\ r \ N' | Linux =='\ n' – HamZa

+0

您可以使用^作为行的开始,$作为行尾。也许你必须在正则表达式引擎中设置一个标志 – smerlung

+1

@HamZa:选择不是问题,我的文件只有'\ n' - unix样式。这是替代失败。 – Medorator

回答

1
(.|\n)* 

在这个捕获的组中,您只会得到最后一场比赛。你可以尝试使用这个:

((?:.|\n)*) 

或者,如果你想匹配的一切你可能使用类似:

([\s\S]*) 
+0

@buffer我似乎无法找到一个参考:([本网站](http://www.regular-expressions.info/refcapture.html)曾经有一个网页描述它...但你可以玩你可以看看这个[演示站点](http://regex101.com/r/aL5wW5),我已经在那里提供了一个例子,你可以看到匹配的组是'd',即最后一个匹配的字符 – Jerry

+0

看了你的答案后花了一点时间才明白我明显的错误,谢谢。 – Medorator

相关问题