Como usar curingas para encontrar os anos entre 1900 e agora

2

Eu quero saber o número de vezes que qualquer ano de 1900 até o ano atual é mencionado em um arquivo do Word.

Eu sei como usar uma expressão curinga para fazer isso em duas etapas, como segue: < (19 [0-9] {2}) > encontrar jogos 1900-1999
< (20 [0-9] {2}) > para encontrar jogos 2000-2099

Qual é a sintaxe para reduzir isso a um passo?

Caso isso faça alguma diferença, estou usando o Word 2010.

Motivo da pergunta Quando estimo o esforço para editar trabalhos acadêmicos, quero levar em conta o grande número de citações no texto que precisam ser "vistas" por perder vírgulas, parênteses e coisas do tipo.

O número absoluto precisa ser um em que eu tenha alta confiança; o número não precisa ser exato.

    
por RJo 21.08.2015 / 00:02

3 respostas

0

Esta é uma expressão regular para corresponder a todos os anos entre 1900 e 2015

\s((19[0-9][0-9])|(200[0-9])|(201[0-5]))\s
  • A estrutura básica é ((first_range) OR (second_range) OR (third_range))
  • Usamos um OR | lógico para permitir três intervalos
    • (19[0-9][0-9] vai de 1900 a 1999
    • (200[0-9]) vai de 2000 a 2009
    • (201[0-5]) vai de 2010 a 2015
  • \s procura espaços em branco antes e depois de uma correspondência. Isso evita números negativos

Infelizmente, você não pode usar esse padrão no Localizar & Substitua o diálogo . Você tem que abrir seu editor de VBA ( ALT + F11 ) e colar a macro abaixo. Execute com F5

Uma janela de entrada aparecerá quando você inserir seu padrão RegEx. A macro conta todas as ocorrências e as destaca se você escolher

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

Resultado no Word

Recursosusados

por 24.08.2015 / 00:46
0

O melhor que você pode fazer é procurar números de 4 dígitos começando com 1 ou 2 < [1-2] [0-9] {3} > mas quão preciso isso depende muito do conteúdo do documento.

    
por 21.08.2015 / 11:28
0

Ao estudar as respostas de der_michael (acima) e Peter (abaixo), pude combinar seus conselhos para chegar a essa resposta:

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

Até agora, tentei a sintaxe com três artigos, com o número de citações no texto variando de 300 a 731. O número de falsos positivos foi aceitável (1, 2 e 2).

    
por 23.08.2015 / 23:11