正则表达式找到没有字符后面的新行

时间:2015-12-02 01:38:33

标签: regex

我正在尝试编写一个正则表达式(这对我来说绝对不是一个好主意)找到一个换行符模式,后面跟着字符<

因此模式只匹配此字符串一次: some text\nsome more text\n<end of file>

任何帮助?

1 个答案:

答案 0 :(得分:0)

这应该有效

(?s).*(?=<)

(?s)切换到单线模式,允许。匹配换行符,正向前瞻允许表达式停止在&lt;不消耗它(即将其添加到匹配中)

这里需要记住的是*是贪婪的,也就是说,它会在最后一场比赛中停止,而不是第一场比赛。因此,如果您在同一个文件中有<end of file>两次,则它将匹配所有文本到第二个文本。

如果你想捕捉重复的eof标签(使用eof标签),你可以做这样的事情

(?s)([^>]+>)

或没有eof标签

(?s)([^<]+)(?:[^>]+>)

在这两种情况下,我们使用否定的字符类来匹配除&lt;之外的任何字符。或者&gt;。当其中一个被击中时,我们停止,并开始新的比赛。