
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