通配符/匹配模式仅在开始时查找

时间:2014-06-11 07:23:44

标签: vba ms-word wildcard word-vba

使用Find时遇到问题。我想找到一些如下的模式:

  • ABC-0123 DEF
  • ABC-01234 DEF
  • ABC-012345 DEF
  • ABCD-0123 DEF
  • ABCD-01234 DEF

这种模式可以在文本的任何地方找到。在一行的开头,在结尾或中间。在RegExp中,我可以像"[A-Z]{3,5}-[0-9]{4,6} DEF"一样使用,但这在Wildcards中不起作用。

在我的功能中,它首先搜索"[A-Z]{3}-[0-9]{4} DEF",这将导致在{ BCD-0123 DEF 中找到ABCD-0123 DEF(两者之间没有空格) A和B ..)。

我可以使用什么作为字符来检查之前是否找到了没有任何其他字符的字符串/模式?如果它是一行中的第一个字符串,这会起作用吗?

我将举一个完整的例子。我将有一个Word文档,其中包含以下文字:

  

覆盆子是玫瑰家族悬钩子属植物中多种植物的可食用果实,ABD-0123 DEF大多数属于Idaeobatus亚属;这个名字也适用于这些植物本身。覆盆子是多年生的木质茎。 ABCD-01323 DEF

     

ABCD-011223 DEF里面有所有细节。

这是文本的外观。我现在想让宏找到我上面提到的所有不同的模式并使它们变粗体。

1 个答案:

答案 0 :(得分:2)

<强>解

解决方案是我可以使用与“[AZ] {3,5} - [0-9] {4,6} DEF”相同的RegExp,只是我需要替换逗号“,”用分号“;”。

答案:“[A-Z] {3; 5} - [0-9] {4; 6} DEF”

要确保图案不在单词的中间,您可以使用“&lt;”。

我的完整解决方案:

“&lt; [A-Z] {3; 5} - [0-9] {4; 6} DEF”