正面表达问题与lookbehind和lookahead

时间:2011-04-10 17:48:14

标签: c# regex

我正在尝试创建一个正则表达式,它将<div class="entrytext">中的所有内容都带到此div类旁边的第一个</p>

目前这就是我所拥有的:

(?<=<div class="entrytext">.*<p>).*(?></p>)

进展顺利导致此div上方的所有代码都不匹配,但我遇到的问题是<div>之后文档中有很多</p>

我想要的是接下来这个div的所有内容,但直到找到第一个</p>

你可以帮个忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

  1. 大多数正则表达式解析器不允许使用可变长度的lookbehinds
  2. 您需要非贪婪的操作员(?后)* (?<=<div class="entrytext">.*?<p>).*?(?></p>)
  3. Regex(令人惊讶的是曾经一度)这个工作的工具,但仍然关注html解析器,无论你正在做什么需要,这可能会从中受益。