如何使用通配符查找 1900 年至今的年份

如何使用通配符查找 1900 年至今的年份

我想知道从 1900 年到当前年份的任何年份在 Word 文件中出现的次数。

我知道如何使用通配符表达式分两步执行此操作,如下所示:
<(19[0-9]{2})> 查找匹配项 1900-1999
<(20[0-9]{2})> 查找匹配项 2000-2099

将其简化为一步的语法是什么?

为了避免有差异,我使用的是 Word 2010。

提问理由 当我估算编辑学术论文的工作量时,我会将需要“目测”缺少的逗号、括号等的文内引用的绝对数量考虑在内。

这个绝对数字必须是我高度信任的数字;这个数字不必精确。

答案1

最好的方法是查找以 1 或 2 <[1-2][0-9]{3}> 开头的 4 位数字,但其准确性在很大程度上取决于文档的内容。

答案2

通过研究 der_michael(上文)和 Peter(下文)的回答,我结合他们的建议得出了这个答案:

<[1920]{2}[0-9]{2}>

到目前为止,我已经在三篇论文中尝试了该语法,文内引用数从 300 到 731 不等。误报数是可以接受的(1、2 和 2)。

答案3

这是一个正则表达式,用于匹配 1900 年至 2015 年之间的所有年份

\s((19[0-9][0-9])|(200[0-9])|(201[0-5]))\s
  • 基本结构是((first_range) OR (second_range) OR (third_range))
  • 我们使用逻辑或|来允许三个范围
    • (19[0-9][0-9]从 1900 年到 1999 年
    • (200[0-9])从 2000 年到 2009 年
    • (201[0-5])从 2010 年到 2015 年
  • \s查找匹配项前后的空格。这可以防止出现负数

不幸的是,你不能在 Word 的查找和替换对话框。您必须打开 VBA 编辑器 ( ALT+ F11) 并粘贴以下宏。使用以下命令执行它F5

系统会弹出一个输入窗口,供您输入 RegEx 模式。如果您选择,宏会统计所有出现的情况并突出显示它们

Sub RegexReplace()

    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")
    'On Error Resume Next

    RegEx.Global = True
    RegEx.Pattern = InputBox("Enter your regex pattern to find and count")
    Set Matches = RegEx.Execute(ActiveDocument.Range)

    answer = MsgBox("There are " & Matches.Count & " occurances" & vbCrLf & _
        "Highlight them?", vbYesNo)

    If answer = vbYes Then
        For Each hit In Matches
           ActiveDocument.Range(hit.FirstIndex, hit.FirstIndex + hit.Length). _
             HighlightColorIndex = wdYellow
        Next hit
    End If

End Sub

Word 中的结果

在此处输入图片描述

使用的资源

相关内容