正则表达式匹配' \ n'字符

时间:2014-06-20 13:12:42

标签: java regex

我有一个字符串"<?xml version=2.0><rss>Feed</rss>"我写了一个正则表达式来匹配这个字符串

"<?xml.*<rss.*</rss>" 

但是如果输入字符串包含\ n喜欢`&#34; \ nFeed&#34;不适用于上述正则表达式。

如何修改我的正则表达式以在字符串之间包含\ n字符。

2 个答案:

答案 0 :(得分:1)

可以用标志控制点的匹配行为。在Java中看起来像点的默认匹配行为是除行终止符\ r和\ n之外的任何字符。

我不是Java程序员,但通常在搜索字符串的开头使用(?s)会将点的匹配行为更改为包括行终止符在内的任何字符。所以也许"(?s)<?xml.*<rss.*</rss>"可行。

但最好使用"<?xml.*?<rss[\s\S]*?</rss>"作为搜索字符串。

\s匹配包含行终止符的任何空白字符,\S匹配任何非空白字符。方括号中的两个都会导致匹配任何字符。

对于完整性:[\w\W]也始终匹配任何字符。

答案 1 :(得分:1)

您可以将其与(\\n)*结合使用。有必要添加额外的\,因为它是一个特殊字符。 另一个选择是在执行正则表达式之前执行replaceAll("\\n","")