Wordの検索・置換でワイルドカードON/OFFの挙動の違い
検索や置換のダイアログでワイルドカードのチェックボックスがOFFの場合は「特殊文字」で表示されるのは以下のものです。
ワイルドカードのチェックがOFFの状態では例えば「[0-9]{4}」などと検索しても、単なる文字列として扱われるためヒットしません。
ワイルドカードのチェックボックスをONにすると以下のように変化します。
正規表現的な表記が一部利用できるようになり、置換では後方参照も可能と、かなり役立つ場面がありますので、ここではワイルドカードに使える「特殊文字」についてメモしておきます。
ワイルドカード有効時に使える「特殊文字」
任意の1文字:?
全角・半角問わず1文字の何かに一致します。
例えば以下のようにした場合、
第??巻
以下の文字には一致しますが、
第33巻 第45巻 第壱拾巻
以下には一致しません。
第3巻 第4巻 第壱巻
「?」に対応する文字数は同じ個数でなくてはいけないので、間にある文字数が不明な場合は後述する「*」や、繰り返し回数の「{,}」などを使います。
範囲内の1文字:[-]
[]内に文字を列挙するか、ハイフンで範囲を指定します。
単体で使用するより、直前の文字の繰り返しの「@」や「*」、文字数を指定する「{,}」などと組み合わせて使う場合が多いと思います。
以下のようにすると数字の0~9のいずれかです
[0-9]
アルファベットや日本語も対応しています。
[a-z] [A-Z] [あ-ん] [ア-ン]
アルファベットは大文字・小文字が区別されるため、どちらでも一致させたい場合は以下のように両方指定します。
「いずれかの文字」に一致するので、どちらが先でも構いません。
[a-z][A-Z]
カッコ内は列挙してもOKです。
例えば以下の場合は「ア」「フ」「メ」「リ」「カ」のいずれかによる4文字で構成された文字列に一致するため、「アメリカ」「アフリカ」のどちらでも一致します(指定文字で構成された文字列なので、「メリメリ」などにも一致してしまいますが)
[アフメリカ]{4}
単語の先頭:<
単語はスペースや括弧などの記号で区切られた文字列です。
これを指定せずに検索した場合、「ship」で検索すると「championship」の末尾にも一致しますが、「<ship」とすると、「shipment」のように単語の先頭でないと一致しません。
大文字・小文字は区別されるため、どちらでも一致させたい場合は以下のように[]内に「s」と「S」を列挙して指定します。
「<[sS]hip」
Shipment shipment
上記のようにすると先頭が大文字でも小文字でも一致します。
上記で指定する以外にもチェックボックスでON/OFFできるオプションがありますので、それらと併用すると一致させやすくなります。
単語の末尾:>
単語の末尾に一致します。
単語の先頭の「<」は「<mozi」などと指定しましたが、この「>」は「>mozi」のように記号と指定文字が逆なので注意します。
以下のように指定すると、
ship>
「Championship」には一致しますが、「Shipment」や「ships」には一致しません。
式:()
正規表現で言う「グループ化」で、置換では後方参照できます。
()の出現順と対応して「\1」や「\2」で参照できます。
「2020年10月8日」を「2020/10/8」にする例を見てみます。
西暦の4桁の数字は ([0-9]{4}) と表し、月や日は1桁か2桁なので ([0-9]{1,2}) と表します。
置換後の文字列では括弧の出現と対応して\1、\2などと表記しますので、最初の\1は「西暦」が、次の\2は「月」が、最後の\3は「日」が取得でき、それを置換後の文字列として使うことができます。
検索する文字列
([0-9]{4})年([0-9]{1,2})月([0-9]{1,2})日
置換後の文字列
/\2/\3
以下のような感じです。
否定:[!]
指定した文字を否定します。
例えば「インストール」で検索すると、「アンインストール」も一致しますが、以下のようにすると「アンインストール」は除外されます。
[!アン]インストール
範囲内の1文字の[-]も使えます。
[!0-9] [!あ-ん]
繰り返し回数:{,}
繰り返し回数を指定するもので、「*」や「@」では無制限に一致してしまうため、これで回数を指定します。
{}内はカンマ無しで指定すると指定個数に一致し、{1,4}などと指定すると、1文字~4文字の範囲に一致します。
数字4文字に一致
[0-9]{4}
数字2文字~4文字に一致
[0-9]{2,4}
直前の文字の繰り返し:@
次の「*」と似ていますが、こちらは直前に指定した文字が繰り返される場合に一致します。
例えば以下の場合は「Bom」や「Boom」や「Booooom」など、直前の「o」が繰り返される場合に一致し、「o」は何個あっても一致します。
Bo@m
[]との組み合わせ例です。
以下のようにすると、
B[aeot]@m
以下のような文字列に一致します。
Bom Booom Beam Bottom
0以上の文字:*
@とは違い、「無くても」「有っても」「繰り返されていても」一致します。
例えば以下のようにすると
B*m
以下のようなものに一致します。
Bm Bom Booom Beam Bottom
手軽で便利ですが、相当あいまいな分、必要以上に一致してしまう点に注意しましょう。
Wordでは複数行(改行も含めて)一致するため、置換を行う前に必ず「検索」でどこに一致するのかを確認しておかないと、必要外の箇所が置換される恐れがあります。
タブ文字:^t
キーボードの「Tab」キーを押した時のタブに一致します。
Unicode文字の「U+0009」です。
キャレット:^^
キャレットはWordだとキーボードの「CTRL + ^」で入力できる以下のような文字です。
「e」と「a」の上にある「^」がキャレットです。
段区切り:^n
段区切りとは レイアウト > 区切り から選択できる段落の区切りです。
標準の状態では表示されませんが、「段落」の「編集記号の表示/非表示」で切替出来ます。
表示させると以下のようになっています。
省略記号:^i
省略記号は「…」という文字です。
Wordから入力する場合はショートカットの「ALT + CTRL + .」です。
挿入 > 記号と特殊文字 > 特殊文字タブ からショートカットの確認や変更が行えます。
日本語入力からも直接入力することができ、「・・・」と入力して変換して出てくる「[全]三点リーダ」という記号がそれです。
Wordからのショートカット入力、日本語入力のどちらでも同じ文字が入るので、どちらにも一致します。
3点リーダー:^j
3点リーダーは先の省略記号の「…」そのものです。
「検索する文字列」に直接「…」を入力しても(・・・と打ってから変換して三点リーダを選択)一致します。
全角ダッシュ:^+
全角ダッシュは「―」ですが、いくつか試してみた所、「U+2014」の全角ダッシュにのみ一致するようです。
Wordで挿入する場合は、挿入 > 記号と特殊文字 > 「特殊文字」から選択して「挿入」で挿入できます。
日本語入力から入れている場合は一致しない可能性もあるので、検索欄に直接入れた方が良いかもしれません。
Unicode文字はドラッグ後に右クリックすると文字コードが確認できます。
1/4スペース:^q
1/4スペースは幅の小さなスペース記号ですが、使った事がないです。
海外だと使うのかもしれません。
挿入 > 記号と特殊文字 > 「特殊文字」から選択して「挿入」で挿入できます。
半角ダッシュ:^=
「U+2013」の半角ダッシュのみに一致します。
半角ダッシュには別のコードもあるため、検索欄に直接入れた方が良さそうです。
グラフィックス:^g
ワイルドカードがONだと使えませんがメニューには表示されていました。
ワイルドカードがOFFの場合は挿入した画像などに一致します。
ただし、「文字列の折返し」が行内(インライン)の画像のみに一致し、それ以外の設定にすると一致しません。
任意指定の改行:^x
挿入 > 記号と特殊文字 > 「特殊文字」から選択して「挿入」で挿入できます。
Unicode「U+200C」に一致します。
任意指定の行区切り:^l
通常の改行(Enterキー)で改行すると別の段落として扱われ、個々にスタイルを変更できますが、「Shift + Enter」の改行では段落は分断せず、その中で改行をするようなふるまいになります。
罫線で囲った段落内で改行する場合は、そのまま改行すると罫線囲いから外に出てしまいますが、これだと囲いの中で改行できるというアレです。
普通の改行は以下ですが、
任意指定の行区切りでは下向き矢印の記号です。
ページ/セクション区切り:^m
ページ区切り、セクション区切りに一致します。
これらの区切りは、レイアウト > 区切り から操作できます。
改行なし:^z
挿入 > 記号と特殊文字 > 「特殊文字」から選択して「挿入」で挿入できます。
Unicode「U+200D」に一致します。
改行をしないハイフン:^~
挿入 > 記号と特殊文字 > 「特殊文字」から選択して「挿入」で挿入できます。
Unicode「U+2011」に一致します。
改行をしないスペース:^s
挿入 > 記号と特殊文字 > 「特殊文字」から選択して「挿入」で挿入できます。
Unicode「U+00A0」に一致します。
任意指定のハイフン:^-
挿入 > 記号と特殊文字 > 「特殊文字」から選択して「挿入」で挿入できます。
Unicode「U+00AD」に一致します。
コメントフォーム