我有一个字符串"<?xml version=2.0><rss>Feed</rss>"
我写了一个正则表达式来匹配这个字符串
"<?xml.*<rss.*</rss>"
但是如果输入字符串包含\ n喜欢`&#34; \ nFeed&#34;不适用于上述正则表达式。
如何修改我的正则表达式以在字符串之间包含\ n字符。
答案 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","")
。