REGEX仅匹配包含特定字符串的整个标记

时间:2011-11-08 15:40:21

标签: regex regex-greedy

我目前的正则表达式模式:

(?s)]*>(.*?)\bsomethin\b(.*?)

要搜索的HTML片段:

<p>somethin</p>
<p>nuthin</p>

如果我针对上面的html片段运行它,它将匹配<p>somethin</p>这就是我需要的。

但是,如果我将模式嵌入字符串从“somethin”更改为“nuthin”,当我只想要第二个标记集时,它将完全匹配两个p标记。如果我嵌套p标签而不是将它们放在一行上,行为是相同的,这也是所希望的。

感谢。

3 个答案:

答案 0 :(得分:1)

表达很奇怪,我并不完全明白你想要什么。但如果您希望采用每个标签,请尝试下一个正则表达式:

(?s)<(.+?)>\b\w+\b</\1>

准确地提出你的问题,PLZ。

答案 1 :(得分:0)

以下是我的建议:

(<([^>\s]*)[^>]*>[*<]*somethin[*<]*</\2>)

如果您的父元素中包含嵌套的HTML标记,则无效。但是,您应该是黄金标记。

答案 2 :(得分:0)

如果您只想选择使用完全字符串this<(\w+).*?>(somethin)<\/\1>

的标签

如果要选择标记containsig substring,请使用this<(\w+).*?>.*?(somethin).*?<\/\1>