我有一个这样的字符串。
<p class='link'>try</p>bla bla</p>
我想只获得<p class='link'>try</p>
我试过了。
/<p class='link'>[^<\/p>]+<\/p>/
但它不起作用。
我怎么能这样做? 谢谢,
答案 0 :(得分:4)
如果这是您的字符串,并且您希望这些p
标记之间的文字,那么这应该有用...
/<p\sclass='link'>(.*?)<\/p>/
您的工作不起作用的原因是您要将<\/p>
添加到非字符范围内。它不是字面上匹配,而是单独检查每个字符。
当然,我必须提到有更好的工具来解析HTML片段(例如HTML解析器)。
答案 1 :(得分:0)
'/<p[^>]+>([^<]+)<\/p>/'
会让你“试试”
答案 2 :(得分:0)
您似乎使用了此块:[^<\/p>]+
打算匹配除</p>
之外的任何内容。不幸的是,这不是它的作用。 []
块匹配其中的任何字符。在您的情况下,/<p class='link'>[^<\/p>]+
部分与<p class='link'>try</
匹配,但未立即跟随预期</p>
,因此没有匹配。
Alex的解决方案,使用非贪婪的限定符是我倾向于解决这类问题的方法。
答案 3 :(得分:0)
我试图使一个特定标签不那么具体。
(<[^/]+?\s+[^>]*>[^>]*>)
返回:
<p class='link'>try</p>