我有以下正则表达式:
(?:<(?<tag>\w*)>(?<text>.*)</\k<tag>>)
我希望它能抓住第一个HTML元素中的文本。
例如
<p>This should capture</p>This shouldn't
工作,但......
<p>This should capture</p><p>This shouldn't</p>
不起作用。正如您所期望的那样,它会返回:
This should capture</p><p>This shouldn't
我在这里绞尽脑汁。我怎样才能选择第一个内部文本?
(我正在尝试与标签无关,所以<strong>This should match</strong>
同样适用,等等。)
答案 0 :(得分:3)
答案 1 :(得分:2)
停止。停下来。如果要解析HTML,请使用HTML解析器(如果您正在处理有效的XHTML,则使用XML)。有关详细信息,请参阅this answer。
答案 2 :(得分:1)
为了有一个非贪婪的*选择,你应该添加一个?在*。
之后(?:<(?<tag>\w*)>(?<text>.*?)</\k<tag>>)