-1

可能重复:
正则表达式匹配打开的标签,XHTML 自包含标签除外

我正在尝试检索分隔符之间的字符串...

这里的样本:

<TAG> x1 x2 y1 y2 </TAG>

我希望我的正则表达式返回TAG

您能否提供一个好的正则表达式文档的链接?

4

1 回答 1

1

您正在做的事情可能没问题,只要标签不是递归的,否则这样做不是一个好主意!(有趣的读物)。

如果您尝试编写正则表达式以在这些标签之间获取某些内容,并且这是您希望处理的唯一确切情况:

  1. 您需要在标签 1 中捕获名称。请参阅-是通过用括号括起来完成的。

regex = "<(.*?)>".

问号是为了确保匹配最短的字符串(非贪婪) - 在你的情况下是 TAG 。如果你只给出 <.*> 它匹配整个表达式,因为默认情况下正则表达式倾向于匹配最长的字符串。括号中存储了标签名称,以便在步骤 2 中使用。

  1. 然后,您需要确保结束标签具有相同的标签 - 这需要对捕获的组进行反向引用。(请参阅this)。所以,在这里你需要写:

regex = "<(.*?)>.*</\1>"

\1 是对第一组括号中捕获的表达式的反向引用。

我自己没有测试它,但它应该让您了解编写此类表达式所需的概念。

于 2012-09-28T21:40:03.227 回答