2016-09-28 118 views
-3

我有找到正确的正则表达式根据下列标准提取字符串挣扎:Java的正则表达式:找到正确的正则表达式

我有多个标签的XML片段。每个元素以<ABC_xxxx>开头并以</ABC_xxxx>

结尾每个元素的xxxx更改。例如:

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

等等

x的数量是不固定的!

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

我该怎么做?

感谢。

+2

同样 - [强制性链接](http://stackoverflow.com/a/1732454/2071828)。不要这样做。使用XPath。 –

回答

1

假定会有相互嵌套没有这样的元素,尝试:

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

说明:

  • \<ABC(\w+)\>是开始标记,与ABC开始ABC后的字母被捕获在一组中(因此括号)。我们需要他们以后
  • [^\<]+是,除了左尖括号
  • <\/ABC(\1)\>是与ABC开始,必须在开放标签ABC后的确切字母按照闭合元件的任何字符元素的身体。 \1是对第一个捕获组的引用。

重要提示:XML不是regular language,因此正则表达式是不能够解析它。例如,想象2个或更多个这样的元件嵌套在彼此内部。使用XML解析器来解析XML。

0

尝试:

<ABC_([^>]*)>([^<]*)<\/ABC_([^>]*)>