使用正则表达式搜索HTML时出现问题

时间:2013-04-22 18:41:03

标签: regex vba vbscript

我第一次尝试使用正则表达式并遇到麻烦,可能是我的语法。

以下是我想找到的源文件中包含的示例字符串:

Type = Creature / Animal / Elephant

“Type =”是静态的,但正斜杠之间的三个值可以改变。

我正在使用的搜索字符串是:

\bType = .*/.*/.*\b

我的搜索字符串工作正常,但我的源文件是HTML,一些字符串嵌入了HTML代码:

Type = Creature / Animal / Elephant 
Type = Creature / Animal / Elephant<br />
Type = Creature / Animal / Elephant</span></span></strong>

这样的东西(它不是很好的HTML,也许是从Microsoft Word复制粘贴?)

对于我的搜索表达式,这是结果之一:

Type = Creature / Many&nbsp;Fish&nbsp;/ Tuna&nbsp; </span></span></li

我不明白为什么结果不止于“&amp;”或“&lt;”金枪鱼之后。

有关如何更改表达式以处理这些变体的任何想法?

我正在使用Microsoft VBScript Regular Expressions 5.5库在Microsoft Excel中使用VBA。谢谢。

1 个答案:

答案 0 :(得分:1)

你的正则表达式:

.*/.*/.*\b

消耗太多,因为.*贪婪地捕获。你可以不情愿地匹配它们,但是你想要的逻辑在做这项工作方面有点不清楚。因此,相反,这将更准确地指定应匹配的内容。

[^/]*/[^/]*/ \w+

而不是.*,使用[^/]*表示除了“/”之外的其他内容,因此它会阻止贪图消耗过斜线,特别是当有斜杠时,就像在几个示例中一样。 \w+是一个空格,后跟一个或多个单词字符(字母,数字,下划线)。它不会消耗空格或&,但听起来就是意图。

但实际上,我怀疑更好的解决方案是not use regex for this at all