我有这样的字符串。正则表达式选择
<p class='link'>try</p>bla bla</p>
我想只有<p class='link'>try</p>
我已经试过这一点。
/<p class='link'>[^<\/p>]+<\/p>/
但它不起作用。
我该如何做到这一点? 谢谢,
我有这样的字符串。正则表达式选择
<p class='link'>try</p>bla bla</p>
我想只有<p class='link'>try</p>
我已经试过这一点。
/<p class='link'>[^<\/p>]+<\/p>/
但它不起作用。
我该如何做到这一点? 谢谢,
如果这是你的字符串,你想那些p
标签之间的文本,那么这应该工作...
/<p\sclass='link'>(.*?)<\/p>/
原因你不工作是因为你要添加<\/p>
到你不是人物范围。它不是字面上的匹配,而是单独检查每个字符。
当然,它是强制性我提到有用来解析HTML片段更好的工具(如HTML解析器。)
'/<p[^>]+>([^<]+)<\/p>/'
将让你“试穿”
它看起来像你使用此块:[^<\/p>]+
打算匹配除</p>
以外的任何内容。不幸的是,这不是它所做的。 A []
块可以匹配里面的任何字符。在你的情况下,/<p class='link'>[^<\/p>]+
部分匹配<p class='link'>try</
,但它并没有紧跟着预期的</p>
,所以没有匹配。
亚历克斯的解决方案,使用非贪婪限定符是我倾向于解决这类问题。
我试图让一个不太特定于任何特定的标签。
(<[^/]+?\s+[^>]*>[^>]*>)
这将返回:
<p class='link'>try</p>
正则表达式和HTML? http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2011-01-31 21:57:56
虽然你当然*可以* [用正则表达式解析HTML](http://stackoverflow.com/questions/4284176/question-in-parsing-data-in-perl-where-am-i-going-wrong/4286326#4286326),如果它是通用HTML,你可能不想要。虽然“俘虏”HTML是好的;只是在它的“狂野”状态中非常谨慎。 – tchrist 2011-02-01 01:02:47