exclui cadeias de palavras específicas usando curingas

1

Não consigo encontrar o caractere curinga apropriado (suponho que seja [!] ), o que excluiria da expressão

argument[oales]{1,4}

as três palavras a seguir

argumento os
argumento a
argumento como

Em outras palavras, gostaria de encontrar apenas as três palavras a seguir

argumento o
argumento al
argumento ales

então talvez seja a expressão argument[oales]{1,4} que não é apropriada para começar.

Note que estou realmente tentando encontrar uma 'expressão padrão' para que eu possa usá-la com qualquer outra família de palavras morfológicas; assim, essas três palavras são meros exemplos.

Eu usaria esse padrão em uma macro e, possivelmente, na opção Localizar e substituir, para implementar substituições em lote.

Caso contrário, alguma ferramenta de software de pesquisa e substituição de terceiros ou de terceiros faria o trabalho?

Atualizar

Aqui está a macro que estou usando.

Sub ReplaceFromTableList()

Dim oChanges As Document, oDoc As Document
Dim oTable As Table
Dim oRng As Range
Dim rFindText As Range, rReplacement As Range
Dim i As Long
Dim sFname As String
Dim sAsk As String

    sFname = "C:\Users\Win7\Desktop\macro.docx" 'The table document
    Set oDoc = ActiveDocument
    Set oChanges = Documents.Open(FileName:=sFname, Visible:=False)
    Set oTable = oChanges.Tables(1)

    For i = 1 To oTable.Rows.Count
        Set oRng = oDoc.Range
        Set rFindText = oTable.Cell(i, 1).Range
        rFindText.End = rFindText.End - 1
        Set rReplacement = oTable.Cell(i, 2).Range
        rReplacement.End = rReplacement.End - 1

        With oRng.Find

            .ClearFormatting
            .Replacement.ClearFormatting

            Do While .Execute(FindText:=rFindText, _
                  MatchCase:=True, _
                  MatchWholeWord:=True, _
                  MatchWildcards:=True, _
                  Forward:=True, _
                  Wrap:=wdFindStop) = True

            oRng.Select
            'oRng.FormattedText = rReplacement.FormattedText
            oRng.Text = rReplacement.Text
            oRng.Collapse wdCollapseEnd

        Loop

        End With

    Next i

    oChanges.Close wdDoNotSaveChanges

lbl_Exit:
    Exit Sub

End Sub

Ao depurar após o Runtime Error 5692, a seção a seguir da macro

Do While .Execute(FindText:=rFindText, _
                  MatchCase:=True, _
                  MatchWholeWord:=True, _
                  MatchWildcards:=True, _
                  Forward:=True, _
                  Wrap:=wdFindStop) = True

aparece em amarelo, selecionado pelo Microsoft Word.

    
por GJC 23.03.2016 / 11:14

1 resposta

1

Infelizmente, o regex no Word não suporta nem as alternativas | , nem os quantificadores "zero ou mais" ( * ou {0,1} ), por isso, receio que não exista uma forma simples de o fazer.

Você precisa procurar cada formulário em uma pesquisa separada.

Atualizar

Relendo sua pergunta Eu percebi que você a usaria em uma macro, felizmente existem expressões regulares diferentes, você pode usar:

argument(o|al|ales)^

Em que | está separando partes opcionais e ^ é o final da palavra (observe o uso de () em vez de [] ).

    
por 24.03.2016 / 07:49