Regexp - 搜索不包含整个单词的文本

时间:2010-02-06 19:29:31

标签: regex

我的文字类似于:

<html><p>this is <b>the</b> text</p> and <p>this is another text</p></html>

我需要使用regexp

来获取此文本

this is <b>the</b> text

问题是,当我使用这样的简单正则表达式(<html>.*</p>)时,我会在</p>

的最后一次出现之前得到全文

任何人都可以帮助我吗?

感谢 lennyd

4 个答案:

答案 0 :(得分:3)

您需要non-greedy匹配:

<html>.*?</p>

此外,您可能需要考虑为此任务使用HTML解析器而不是正则表达式。

答案 1 :(得分:2)

默认情况下,正则表达式量词是贪婪的,即您获得最大长度的匹配。您必须使用。*?<?p>

指定您需要“非贪婪”的匹配

答案 2 :(得分:0)

要在para标签之间捕获数据,您可以使用正向预测断言/<p>(.*)(?=<\/p>)/的正则表达式,这比.*?更贪婪并且工作得更慢,但可能对您有所帮助。还要确保您的HTML有效,这意味着:

  1. 所有para标签都已关闭。 HTML浏览器在进入另一个块时关闭para标签。
  2. Para标签不是嵌套的:)否则你有任何正则表达式的问题。

答案 3 :(得分:0)

愚蠢的问题,仍然使用纯正则表达式,为什么不剥离任何&lt; ..&gt;里面的段落?然后使用类似[^<]的东西抓住短语 ?