web-dev-qa-db-ja.com

ワイルドカードを使用して特定の単語の文字列を除外する

式から除外される適切なワイルドカード([!]である必要があると思います)を思い付くことができないようです。

argument[oales]{1,4}

次の3つの言葉

引数os
引数a
引数as

つまり、次の3つの単語だけを見つけてほしいのです。

引数o
引数al
引数ales

ですから、そもそも適切ではないのはargument[oales]{1,4}という式かもしれません。

他の形態学的なWordファミリーで使用できるように、実際には「パターン式」を見つけようとしていることに注意してください。したがって、これらの3つの単語は単なる例です。

このパターンをマクロで使用し、場合によっては[検索と置換]オプションで使用して、置換をバッチで実装します。

そうでなければ、いくつかのアドインまたはサードパーティの「検索と置換」ソフトウェアツールがその仕事をしますか?

更新

これが私が使用しているマクロです。

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

ランタイムエラー5692の後にデバッグする場合、マクロの次のセクション

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

microsoftWordによって選択された黄色で表示されます。

1
GJC

残念ながら、Wordの正規表現は代替の_|_も、「ゼロ以上」の数量詞(_*_または_{0,1}_)もサポートしていないため、簡単な方法はありません。 。

個別の検索で各フォームを探す必要があります。

更新

質問を読み直すと、マクロで使用することに気づきました。幸い、正規表現は異なります。次のように使用できます。

argument(o|al|ales)^

ここで、_|_はオプションの部分を区切り、_^_は単語の終わりです(_()_の代わりに_[]_を使用していることに注意してください)。

1
Máté Juhász