0

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

这是我想查找的源文件中包含的示例字符串:

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

我不明白为什么结果不是在 Tuna 之后的“&”或“<”处停止。

关于如何改变我的表达来处理这些变体的任何想法?

我正在使用 Microsoft VBScript 正则表达式 5.5 库在 Microsoft Excel 中使用 VBA。谢谢你。

4

1 回答 1

1

你的正则表达式:

.*/.*/.*\b

是消耗太多,因为.*贪吃。您可以不情愿地将它们全部匹配,但是您在此处想要的逻辑对于使其起作用有点不清楚。因此,相反,这将更精确地指定应该匹配的内容。

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

而不是.*,使用[^/]*除“/”以外的任何含义,因此它将防止贪婪地消耗过去的斜杠,特别是当有斜杠时,如您的几个示例中所示。 \w+是一个空格,后跟 1 个或多个单词字符(字母、数字、下划线)。它不会消耗空格,或者&但听起来这就是意图。

确实,我怀疑对您来说更好的解决方案是根本不使用正则表达式

于 2013-04-22T19:21:05.517 回答