【问题标题】:Regex with vb.net正则表达式与 vb.net
【发布时间】:2010-12-24 08:56:58
【问题描述】:

我在一个字符串中包含以下 html。


你好


世界


让大家微笑

我想使用 RegEx 查找包含文本“World”的

。困难在于包含搜索文本的 周围可能还有其他 。因此,我们需要能够使用 和搜索文本之间的任何文本来搜索最接近搜索文本的 和 。

比赛的结果是。


世界

顺便说一句,我正在使用 vb.net。

有人可以帮忙吗?

谢谢

理查德

【问题讨论】:

标签: vb.net regex


【解决方案1】:

首先,应该指出,对于这类事情,您要使用HTML Agility Pack,而不是正则表达式。

但除此之外,模式可能如下所示:

(<tr>.*?World.*?</tr>)

这是一个相当糟糕的模式,但话又说回来,使用敏捷包。

【讨论】:

  • 这不匹配前 6 行 - 从第一个 &lt;tr&gt;World 之后的 &lt;/tr&gt;
  • 不,非贪婪运算符? 将确保&lt;tr&gt;World 之间的空白尽可能小,而不会破坏匹配
  • 在 Expresso 上测试并得到了这个。 &lt;tr&gt;&lt;td&gt;Hello&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;World&lt;/td&gt;&lt;/tr&gt;
  • 非贪婪不是这样运作的。非贪婪负责不匹配整个字符串(包括最后一个 ) - 毕竟整个字符串以 开头并以 结尾 - 但由于正则表达式末尾的.*? , 它匹配第一个
  • 酷,实际上我设法重现了相同的内容。所以可以重写模式(快速而肮脏的东西是(&lt;tr&gt;[^&lt;]*&lt;td&gt;World.*?&lt;/tr&gt;)),但更重要的是,我在回复中的主要观点是要使用诸如这些 not 之类的表达式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多