我只想通过表达式捕获第一个匹配项
<p>.*?</p>
我已经尝试过<p>.*?</p>{1}
,但它不起作用它会返回 html 文档中的所有 p 标签,请帮助
我只想通过表达式捕获第一个匹配项
<p>.*?</p>
我已经尝试过<p>.*?</p>{1}
,但它不起作用它会返回 html 文档中的所有 p 标签,请帮助
看起来您正在使用一种方法,该方法返回给定正则表达式的字符串中的每个匹配项,在这种情况下,您需要将正则表达式锚定到字符串的开头,因此它不会返回每个匹配项,而只返回第一个匹配项:
^.*?<p>.*?</p>
使用括号来捕获您想要捕获的内容。
PS:这里有标准“避免使用正则表达式来解析 HTML,使用适当的 HTML 解析器”的建议。这个简单的正则表达式对于嵌套部分将失败<p>
(我不记得它在 HTML 中是否有效,但即使它们不是有效的,你仍然可以得到它们)。
该Regex.Match
方法默认这样做,并且正则表达式是正确的。
Regex regex = new Regex("<p>(.*?)</p>");
Match match = regex.Match("<p>1</p><p>2</p>");
Console.WriteLine("{0}", match.Value);
运行此程序将打印1
.