2011-06-30 150 views
2

我有以下正則表達式(<.*?>.*?</.*?>|[\w[-]]+)\p{Punct}*,它適用於大多數帶有標記的字符串,但如果標記沒有以空格開頭,那麼它會在找到匹配項時中斷標記。正則表達式分割字符串中的標記

請幫我修改這個正則表達式,使它不會中斷標記。我所看到的只是在空間上拆分,但如果空間位於標籤內,則不會。

例如:

 
BIRD-&ltabc attr="co_1">ab</span> 
@apos;<abc attr="co_12">cd</span>FEE 
DEF 

我目前使用的匹配器來匹配這個模式,並獲得令牌

Matcher matcher = REGEX.matcher(newString); 

while (matcher.find()) 
{ 
    token = matcher.group(); 
} 
+7

請先看看這個:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags#1732454 – c00kiemon5ter

回答

0

試試這個:

 
BIRD-<abc attr="co_1">ab</span> @apos;<abc attr="co_12">cd</span>FEE DEF 

應爲剝離

.*?<.*?>.*?</.*?>[^\s]*

它會產生你期望的結果。

0

我會警惕使用正則表達式執行這種類型的解析。如果屬性包含>和/或<字符,則您建議的模式以及其各種適應性可能會異常起來。例如,以下示例將關閉您的模式。如果您需要解析或處理XML文件,我建議您考慮使用合適的XML解析器。請參閱this answer以獲取更長的解釋。

相關問題