MS Word - 3桁の数字のみを検索する

MS Word - 3桁の数字のみを検索する

3 桁の数字だけをすべて検索して削除し、1 桁から 2 桁、4 桁以上の数字は無視する必要があります (参考までに、3 桁目の数字の後に、間にスペースのないテキストが続きます (例: 「457text」))。ご協力いただければ幸いです。

答え1

これは、Word (スクリプトではない) でワイルドカード検索と置換を使用して実行できます。3 桁の数字の後に常に文字が続く場合:

ここに画像の説明を入力してください

または、任意の文字(句読点など)を許可したい場合は、4 番目の文字を数字のバリエーションで除外できます。

ここに画像の説明を入力してください

どちらの例でも、「検索する文字列」セクションでは、丸括弧は部分を示しています。つまり、最初の部分として「単語」の先頭の 3 桁の数字を検索し、次の文字が文字である部分のみを検索します (つまり、保持する 2 番目の部分)。

\2 による置換は、見つかったテキスト (例: 123A) を「A」の部分のみに「置換」することを意味します (その後の残りのテキストは「検索」結果の一部ではないため変更されません)。

< は単語の始まりを意味します。つまり、3 桁の数字を単語の先頭に置きたいのですが、長いシーケンスの途中から 3 桁の数字を拾い上げたくないのです (たとえば、12345 はその中に 345 が見つからないため無視されます)。

角括弧は文字の範囲を表すため、[0-9] は 0 から 9 までの任意の数字を意味し、{3} はそれらの文字の 3 つのシーケンスを意味します。[A-Za-z] は、小文字または大文字の任意の文字を意味します。[!0-9] を使用した代替オプションは、(! は除く) 0 から 9 までの数字をすべて検索します。

答え2

はい、VBAスクリプトでこれを行うことができます。VBAエディタを開くには、ALT + F11を同時に押します。VBAエディタに次のコードを入力します。

Sub RegexReplace()

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

    RegEx.Global = True
    RegEx.Pattern = InputBox("[0-9][0-9][0-9]")
    ActiveDocument.Range = _ 
    RegEx.Replace(ActiveDocument.Range, InputBox(""))        

End Sub

関連情報