下面是一些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