正则表达式拆分字符串中的标签

时间:2011-06-30 10:55:01

标签: java regex

我有以下正则表达式(<.*?>.*?</.*?>|[\w[-]]+)\p{Punct}*,它适用于带有标签的大多数字符串,但如果标签前面没有空格,那么它会在找到匹配项时中断标记。

请帮我修改这个正则表达式,这样它就不会破坏标签。我所看的只是分隔空格,但如果空格在标签内则不是。

例如:

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

应该分成:

BIRD-<abc 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();
}

2 个答案:

答案 0 :(得分:0)

试试这个:

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

它会产生你期望的结果。

答案 1 :(得分:0)

我会谨慎使用正则表达式执行这种类型的解析。如果属性包含&gt;,您建议的模式以及它的各种调整可能会开始表现得很奇怪。和/或&lt;字符。例如,以下示例将关闭您的模式。

<element attr="></>">value</element>

每当您需要解析或处理XML文件时,我建议您考虑使用正确的XML解析器。有关详细说明,请参阅this answer