下面是一些Groovy代码来测试你的模式:
import java.util.regex.*
Pattern brTagPattern = Pattern.compile("(<\\s*br\\s*/\\s*>\\s*){2,}", Pattern.CASE_INSENSITIVE | Pattern.DOTALL)
def testData = [
['', ''],
['<br/>', '<br/>'],
['< br/> <br />', '<br/><br/>'],
['<br/> <br/><br/>', '<br/><br/>'],
['<br/> <br/> <br/>', '<br/><br/>'],
['<br/> <br/> <br/>', '<br/><br/>'],
['<br/><br/><br/> <br/><br/>', '<br/><br/>'],
['<br/><br/><br/><b>w</b><br/>','<br/><br/><b>w</b><br/>'],
]
testData.each { inputStr, expected ->
Matcher matcher = brTagPattern.matcher(inputStr)
assert expected == matcher.replaceAll('<br/><br/>')
}
,一切似乎精细遍......
此正则表达式(即使它被用来解析HTML'')应该工作原样。似乎有一个不同的问题。你能提供更多的上下文吗? –
2010-10-06 13:06:58
可能不是您想要听到的答案,但您应该*不*尝试使用正则表达式解析XML/HTML是一般智慧。很多事情可能会出错 - 使用专门用于此类数据的解析库是一个更好的主意,这也将完全绕过您遇到的问题。 – 2010-10-06 13:07:03
@Adrian:你能举个例子吗? – 2010-10-06 13:48:38