我有以下正则表达式(<.*?>.*?</.*?>|[\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();
}
答案 0 :(得分:0)
试试这个:
.*?<.*?>.*?</.*?>[^\s]*
它会产生你期望的结果。
答案 1 :(得分:0)
我会谨慎使用正则表达式执行这种类型的解析。如果属性包含&gt;,您建议的模式以及它的各种调整可能会开始表现得很奇怪。和/或&lt;字符。例如,以下示例将关闭您的模式。
<element attr="></>">value</element>
每当您需要解析或处理XML文件时,我建议您考虑使用正确的XML解析器。有关详细说明,请参阅this answer。