2

Я хочу знать, сколько раз любой год с 1900 по текущий год упоминается в файле Word.

Я знаю, как использовать подстановочное выражение, чтобы сделать это в два этапа следующим образом:
<(19 [0-9] {2})> чтобы найти совпадения 1900-1999
<(20 [0-9] {2})> чтобы найти совпадения 2000-2099

Каков синтаксис, чтобы уменьшить это до одного шага?

В случае, если это имеет значение, я использую Word 2010.

Причина вопроса Когда я оцениваю усилия по редактированию академических работ, я хочу учесть огромное количество цитат в тексте, которые нужно "очерчить" для пропущенных запятых, скобок и тому подобного.

Абсолютное число должно быть тем, в котором я уверен; число не должно быть точным.

3 ответа3

0

Лучше всего искать 4-значные числа, начинающиеся с 1 или 2 <[1-2] [0-9] {3}>, но насколько это точно зависит от содержания документа.

0

Изучив ответы от der_michael (вверху) и Peter (внизу), я смог объединить их советы, чтобы получить такой ответ:

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

До сих пор я пробовал синтаксис с тремя статьями, с количеством текстовых ссылок в диапазоне 300-731. Количество ложных срабатываний было приемлемым (1, 2 и 2).

0

Это регулярное выражение, соответствующее всем годам между 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

Результат в слове

Использованные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .