【问题标题】:Java RegExp: Finding the correct regular expressionJava RegEx:查找正确的正则表达式
【发布时间】:2016-09-28 10:45:44
【问题描述】:

我正在努力寻找正确的正则表达式以根据以下标准提取字符串:

我有一个带有多个标签的 xml 片段。每个元素以<ABC_xxxx> 开头,以</ABC_xxxx> 结尾

每个元素的 xxxx 都会发生变化。例如:

 <ABC_A1S1>1234</ABC_A1S1>
 <ABC_uw3ey>1234</ABC_uw3ey>
 <ABC_PD4frfr5>1234</ABC_PD4frfr5>

等等……

x的个数不固定!

我想提取每个元素,包括标签本身。

我该怎么做?

【问题讨论】:

标签: java regex


【解决方案1】:

假设没有这样的元素相互嵌套,试试这个:

\<ABC(\w+)\>[^\<]+\<\/ABC(\1)\>

解释:

  • \&lt;ABC(\w+)\&gt; 是以ABC 开头的开始标签,ABC 之后的字母被捕获在一个组中(因此有括号)。我们以后需要它们
  • [^\&lt;]+ 是元素的主体,除了左尖括号之外的任何字符
  • &lt;\/ABC(\1)\&gt; 是以ABC 开头的结束元素,并且必须跟在开始标签中ABC 之后的确切字母。 \1 是对第一个捕获的组的引用。

重要提示:XML 不是regular language,因此正则表达式无法解析它。例如,想象两个或更多这样的元素相互嵌套。使用 XML 解析器解析 XML。

【讨论】:

    【解决方案2】:
    <ABC_([^>]*)>([^<]*)<\/ABC_([^>]*)>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      相关资源
      最近更新 更多