Wordで「正規表現」を使う
Wordの検索、置換にはワイルドカードという仕組みがあります。
テキストエディタやプログラム言語でおなじみの正規表現のように使えます。
基本的な使い方
検索対象 | ワイルドカード(Word) | 正規表現(JavaScript) |
---|---|---|
任意の 1 文字 | ? | . |
0 以上の文字 | * | * |
単語の先頭 | < | なし※もし使うならば「replace(/(^|\s)./g,"$1x")」。 |
単語の末尾 | > | なし※もし使うならば「replace(/.($|\s)/g,"x$1")」。 |
指定した文字のいずれか | [xyz] | [xyz] |
指定した範囲内の任意の 1 文字 | [x-z] | [x-z] |
かっこ内の範囲に含まれる文字を除く任意の 1 文字 | [!x-z] | [^x-z] |
直前の文字または式を n 個 | {n} | {n} |
直前の文字または式を n 個以上 | {n,} | {n,} |
直前の文字または式を n ~ m 個 | {n,m} | {n,m} |
直前の文字または式を 1 個以上 | @ | + |
正規表現の基本である、任意の1文字は「.」でなく「?」です。前の文字の1個以上の繰り返しは「+」でなく「@」です。他は一般的な正規表現と同様に使えます。
「単語の先頭」は日本語にはあまり関係ないのですが、もし使うならば「文の先頭またはスペースの直後」と考えればいいのでJavaScriptならば「(^|\s).」とすればいいかもしれません。「単語の末尾」も同様です。
ワイルドカードを利用した置換
正規表現で便利なのは検索結果のある部分だけを置き換える仕組みです。JavaScriptで「replace(/([0-9]{4})([0-9]{2})([0-9]{2})/,"$1-$2-$3")」のようにすると「20140616」を「2014-06-16」に置換します。
Wordにも同じような機能があります。半角丸括弧で挟んだ部分が順番に「\1」「\2」「\3」に相当します。
検索文字列「([0-9]{4})([0-9]{2})([0-9]{2})」
置換文字列「\1-\2-\3」
とすると正規表現と同様に「20140616」を「2014-06-16」に置換します。
検索文字列「<([A-Za-z]@) ([A-Za-z]@)>」
置換文字列「\2 \1」
とすると「Suzuki Ichiro, Matsui Hideki」を「Ichiro Suzuki, Hideki Matsui」に置換します。
範囲を指定する
上にもありますが、「[ - ]」を使うとその範囲内の文字が指定できます。
この範囲の指定はWordのワイルドカードの場合、Unicodeの並び順になっているようです。
「[0-9]」とすると半角数字になります。
「[a-z]」とすると半角英小文字になります。
「[A-Z]」とすると半角英大文字になります。
「[A-z]」とすると半角英字(大小区別せず)になります。なお「[a-Z]」とすると「[検索する文字列]に指定した範囲が正しくありません。」と表示され、指定できません。
「[ぁ-ゔ]」とすると全角ひらがなになります。
「[ァ-ヺ]」とすると全角カタカナになります。
これらは長音「ー」を含みませんので「[ぁ-ゔー]」などとする必要があるかもしれません。
漢字を検索する
前述の通り範囲指定はUnicodeの並び順になっています。
漢字はCJK統合漢字(「一」4E00から「龥」88EAまで)とCJK互換漢字(「豈」F900から「鶴」FA2Dまで)であると考えると次のように指定できます。
「[一-龥豈-鶴]」
今後の拡張などを考えるともっと範囲を広げる必要がありますが、実用上はこれで問題ないでしょう。
[ 2014年6月24日 | カテゴリー: Word | タグ: tips , ワイルドカード , 正規表現 , 漢字 ]
« アニメ「ワンピース」の正味時間は? | 日本、コロンビアに負け一勝もできず »
コメントを残す