【问题标题】:officejs : Search Word document using regular expressionofficejs:使用正则表达式搜索 Word 文档
【发布时间】:2019-03-11 02:20:56
【问题描述】:

我想搜索“数字 1”、“数字 152”或“数字 36985”等字符串。 在上述所有字符串中,“数字”将是恒定的,但数字会改变并且可以具有任意长度。 我尝试使用通配符Search option,但它似乎不起作用。 像 + 这样的基本正则表达式运算符似乎不起作用。 我试过'number*[1-9]*''number*[1-9]+' 但没有运气。 此正则表达式最多只能选择一位数字。例如如果字符串是 'number 12345' 它只匹配 number 12345(粗体部分)。 有人知道怎么做吗?

【问题讨论】:

    标签: ms-word office-js


    【解决方案1】:

    Word 在其搜索(查找)功能中不使用正则表达式。它有自己的一套通配符规则。这些与 RegEx 非常相似,但不完全相同,也没有那么强大。

    使用 Word 的通配符,下面的搜索文本可以找到问题中给出的示例。 (请注意,1;100 中的分号分隔符可能是其他内容,具体取决于 Windows(或 Mac)中设置的列表分隔符。我的欧洲语言环境使用分号;例如,美国将使用逗号。

    "number [0-9]{1;100}"
    

    100 是我选择的任意数字,用于在它之前搜索词的最大重复次数。根据您期望的数字有多长,这可能会小得多...

    搜索文本的逻辑是:number是一个字面量;文字后面的有效字符范围是 0 到 9;可能有 1 到 100 个这样的字符 - 该范围内的任何字符都是匹配的。

    在 Word 中使用 RegEx 的唯一方法是提取字符串并在该字符串上运行搜索。但这会将字符串与文档分离,这意味着特定于 Word 的内容(格式、字段等)将丢失。

    【讨论】:

      【解决方案2】:

      尝试将<> 放在搜索字符串的末尾,以指示所需字符串的开头和结尾。这对我有用:'<number [1-9]*>''<number [1-9]@>' 也是如此,这可能是您想要的。请注意,在 Word 通配符中使用 @,而在其他 RegEx 系统中使用 +

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-20
        相关资源
        最近更新 更多