2011-06-30 90 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以获取更长的解释。

相关问题