【问题标题】:regex splitting tags in the string正则表达式拆分字符串中的标签
【发布时间】:2011-09-25 21:27:59
【问题描述】:

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

请帮助我修改这个正则表达式,使其不会破坏标签。我正在寻找的只是在空格上分割,但如果空格在标签内,则不是。

例如:

BIRD-ab @apos;cdFEE DEF

应该分成:

BIRD-&ltabc attr="co_1">ab @apos;cd费用 国防军

我目前正在使用匹配器来匹配此模式并获取令牌

Matcher matcher = REGEX.matcher(newString);

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

【问题讨论】:

标签: java regex


【解决方案1】:

试试这个:

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

它会产生你期望的结果。

【讨论】:

    【解决方案2】:

    我会警惕使用正则表达式执行这种类型的解析。如果属性包含 > 和/或

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

    任何时候您需要解析或处理 XML 文件,我建议您考虑使用适当的 XML 解析器。请参阅this answer 以获得更详细的说明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      相关资源
      最近更新 更多