【问题标题】:MS Word VBA search text with find wildcards带有查找通配符的 MS Word VBA 搜索文本
【发布时间】:2011-09-13 21:05:08
【问题描述】:

我需要使用带有通配符的“ms word find”来查找这些匹配项:

{{1,000.00}}
{{-125}} 
{{125-}} 
{{-1’100.00}}  
{{1’100.00-}}  

它的 Selection.Find.Text 应该是什么?

我试过了:

[\{]{2}<*>[\}]{2}

但它不适用于某些单词。


这个通配符几乎完全符合我的需要。我做了一些修改以排除段落返回 ^13 [\{]{2}[!\}][!^13]@[\}]{2}

但是我在匹配这样的段落时遇到问题 blabla {{2}} {{-2-}} blabla 在这种情况下它匹配整个段落 ({{2}} {{-2-}}),然后匹配 {{-2-}}

谁能告诉我原因,以及我需要在通配符中进行哪些更改?

【问题讨论】:

    标签: regex vba ms-word


    【解决方案1】:

    &lt;&gt;字边界 通配符。为了使它们起作用,大括号内的第一个和最后一个字符必须是字母或数字(或任何 Word 的 Find 认为是“单词”字符)。试试这个:

    [\{]{2}[!\}]@[\}]{2}
    

    [!\}]@ 应匹配除} 之外的任意字符中的一个或多个。

    【讨论】:

    • 嗨艾伦,谢谢你的帮助,这个通配符几乎完全符合我的需要。我修改了一下以排除 char return [\{]{2}[!\}][!^13]@[\}]{2} 但是这句话的问题 " {{2}} {{-2-}} " 由于某些原因它匹配整个单词,然后匹配最后一个,知道为什么吗?谢谢
    • 您需要将这两个字符类合并为一个:[!\}^13]@。按照您的方式,[!\}] 匹配左大括号后的第一个字符,然后 [!^13]@ 吞噬其他所有字符。除非它遇到回车,否则就是这样。如果那样的话,如果你不想匹配回车,你不应该拒绝换行吗? [!\}^10^13]@
    • 嗨艾伦,再次感谢您的帮助,按照您的建议进行操作很有效,但是添加 ^10 根本不匹配任何内容。我现在正在使用这个[\{]{2}[!\}^13]@[\}]{2},现在唯一的小问题是它与这个{{}} 不匹配(如果为空),其他都可以正常工作。
    • 显然,@ 表示 one 或更多,而不是像 Visual Studio 正则表达式中的 zero 或更多。似乎也没有单字符零个或多个通配符,所以看起来你必须使用{0,}
    • 我试过[\{]{2}[!\}^13]{0,}[\}]{2},但还是不行,是我遗漏了什么还是错误的顺序?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多