当ツールで使用可能な正規表現


はじめに

当ツールで使用できる正規表現について紹介します。
当ツールのメイン正規表現エンジンはVBScriptRegExpオブジェクトです。
このエンジンでは対応していない一部の表現は、.NET Frameworkの正規表現エンジンを使用しています。
また、オリジナルの拡張機能の表現もあります。

VBScriptの正規表現
.NET Frameworkの正規表現
Onigmo(bregonig.dll)の正規表現

基本的にVBScriptのエンジンを使用します。
その上で未対応構文のためにエラーになった場合に、.NET Frameworkのエンジンを使用します。
意図的に.NET Frameworkのエンジンを使用したい場合は、.NET Frameworkモードにします。
ver5.50からOnigmo(bregonig.dll)の正規表現も使用できるようになりました。

.NET Frameworkモード

.NET Frameworkモードの切り替えは右クリックメニューから行います。


.NET Frameworkモードがオンの場合は、.NET Frameworkの正規表現が入力可能な項目に
フォーカスが当たっているときに、緑色になります。


通常モードでは動作しない.NET Frameworkの正規表現も動作するようになります。


通常モードに戻す場合も同様の方法で戻します。


戻りました。


Onigmoモード

Onigmoモードを使用するには、以下のサイトからbregonig.dllをダウンロードしておく必要があります。
K.Takata's software: bregonig.dll
ダウンロードした圧縮ファイルを展開して、bregonig.dllを正規表現検索のインストールフォルダにコピーします。
Excelが64ビット版の場合は、64ビット版のbregonig.dllをコピーします。


正規表現検索のインストールフォルダにbregonig.dllがある場合、バージョンタブにそのバージョンが表示されます。


Onigmoモードの切り替えは右クリックメニューから行います。


Onigmoモードがオンの場合は、Onigmoの正規表現が入力可能な項目に
フォーカスが当たっているときに、水色になります。


通常モードでは動作しないOnigmoの正規表現も動作するようになります。


通常モードに戻す場合も同様の方法で戻します。


戻りました。


位置マッチング

  • ^ 先頭
    検索パターン ^0
    検索結果 01234567890 1234567890
    先頭の0のみ検索されます。

    検索パターン ^
    置換文字列 =
    置換前 A1+A2 B1*B2
    置換後 =A1+A2 =B1*B2
    先頭に=が付加されます。

  • $ 末尾
    検索パターン 0$
    検索結果 01234567890 1234567890
    末尾の0のみ検索されます。

  • \b 単語境界
    検索パターン \bI\b
    検索結果 I am in Italy.
    Iの単語のみ検索されます。

  • \B 単語境界以外
    検索パターン \Bed\b
    検索結果 I used the education edition.
    edで終わる単語のみ検索されます。

リテラル

  • \n 改行
    検索パターン \n
    検索結果 ABCDE
    FGHIJ
    12345
    改行(改行記号を←で表示することにします)が検索されます。

  • \f フォームフィード

  • \r キャリッジリターン

  • \t 水平タブ

  • \v 垂直タブ

以下の記号はすべて正規表現で特殊な意味を持っています。
これらの文字そのものを表す場合は、その文字の前に\を付けます。
  • \? ?の文字そのもの

  • \* *の文字そのもの

  • \+ +の文字そのもの

  • \. .の文字そのもの

  • \| |の文字そのもの

  • \{ {の文字そのもの

  • \} }の文字そのもの

  • \\ \の文字そのもの

  • \[ [の文字そのもの

  • \] ]の文字そのもの

  • \( (の文字そのもの

  • \) )の文字そのもの

  • \$ $の文字そのもの

検索パターン \.txt
検索結果 test1.txt test2.xls
.txtが検索されます。

その他

  • \xxx 8進数xxxによって表現されるASCII文字

  • \xdd 16進数ddによって表現されるASCII文字

  • \uxxxx UNICODExxxxによって表現されるASCII文字

文字クラス

  • [xyz] 文字セットに含まれている任意の1文字
    検索パターン [12]0
    検索結果 10,11,12,13,14,15 16,17,18,19,20

  • [^xyz] 文字セットに含まれていない任意の1文字
    検索パターン 1[^05]
    検索結果 10,11,12,13,14 15,16,17,18,19

  • . \n以外の任意の1文字
    検索パターン .浦和
    検索結果 北浦和南浦和 浦和、東浦和

  • \w 単語に使用される任意の文字。[a-zA-Z_0-9]と等価。

  • \W 単語に使用される文字以外の任意の文字。[^a-zA-Z_0-9]と等価。

  • \d 任意の数字。[0-9]と等価。

  • \D 任意の数字以外の文字。[^0-9]と等価。

  • \s 任意のスペース文字。[ \t\r\n\v\f]と等価。

  • \S 任意の非スペース文字。[^ \t\r\n\v\f]と等価。

繰り返し

  • {x} x回繰り返し
    検索パターン \d{3}
    検索結果 test001 test15
    3桁の数字を検索

  • {x,} x回以上繰り返し

  • {x,y} x回以上y回以下繰り返し

  • ? 0回以上1回以下繰り返し。{0,1}と等価。

  • * 0回以上繰り返し。{0,}と等価。
    検索パターン plays*
    検索結果 I play baseball. He plays golf.

  • + 1回以上繰り返し。{1,}と等価。
    検索パターン \d+
    検索結果 123,11,A1
    任意の桁の整数を検索

  • ? 繰り返しの後に使用すると最短一致
    検索パターン test\d*?\.txt
    検索結果 test001.txt,test02.txt

    最短一致を使用しないと以下のようになる。
    検索パターン test\d*\.txt
    検索結果 test001.txt,test02.txt

選択とグループ化

  • | 選択
    検索パターン 東京都|神奈川県
    検索結果 東京都江戸川区 神奈川県横浜市
    東京都または神奈川県を検索

  • () グループ化
    検索パターン (東京都)?渋谷区
    検索結果 東京都渋谷区1-2-3 渋谷区1-2-4

  • \n 後方参照。n番目の括弧で囲まれた句
    検索パターン (\d+)\.\1
    検索結果 123.123 12.34,12.12
    整数部分と小数部分が同じ文字列の数値を検索

  • (?:) キャプチャ(後述)しないグループ化
    検索パターン (?:東京都)?渋谷区
    検索結果 東京都渋谷区1-2-3 渋谷区1-2-4

  • (?=) 肯定先読み
    検索パターン 東京都(?=渋谷区)
    検索結果 東京都渋谷区1-2-3 東京都町田市1-2-3
    後ろに渋谷区が続く東京都を検索

  • (?!) 否定先読み
    検索パターン 東京都(?!渋谷区)
    検索結果 東京都渋谷区1-2-3 東京都町田市1-2-3
    後ろに渋谷区が続かない東京都を検索

.NET Framework

  • (?<=) 肯定戻り読み
    検索パターン (?<=東西線)日本橋駅
    検索結果 東西線日本橋駅 銀座線日本橋駅
    前に東西線がある日本橋駅を検索

  • (?<!) 否定戻り読み
    検索パターン (?<!東西線)日本橋駅
    検索結果 東西線日本橋駅 銀座線日本橋駅
    前に東西線がない日本橋駅を検索

  • (?<xxx>) 名前付きグループ

  • \k<xxx> 名前付き後方参照
    検索パターン (?<number>\d+)\.\k<number>
    検索結果 123.123 12.34,12.12
    整数部分と小数部分が同じ文字列の数値を検索

  • (?imnsx-imnsx:) オプション変更グループ

  • (?imnsx-imnsx) オプション変更

    オプション

    • i 大文字と小文字を区別しない
    • m 複数行モード
    • n 明示的なキャプチャのみ
    • s 単一行モード
    • x 空白を無視

  • (?>) 非バックトラッキンググループ

  • (?#) コメント
    検索パターン (?<=地下鉄.*?線).?梅田駅(?#肯定戻り読み)
    検索結果 地下鉄梅田駅 地下鉄御堂筋線梅田駅 地下鉄谷町線東梅田駅
    コメントはパターンに影響を与えません。

その他 拡張機能

  • \Q\E メタ文字のクォート
    検索パターン \Q(03)\E\d{4}-\d{4}
    検索結果 (03)1234-5678
    \Qと\Eの間は特殊文字の\でのエスケープが不要

置換

  • \n 改行 拡張機能
    検索パターン $
    置換文字列 \n
    置換前 A1234←
    B1234
    C1234
    置換後 A1234←
    B1234
     
    C1234
     
    末尾に改行を付加します。

  • $n n番目の括弧で囲まれた句(n番目のキャプチャ)
    検索パターン (\d{4})年(\d{2})月(\d{2})日
    置換文字列 $1/$2/$3
    置換前 2010年05月05日
    置換後 2010/05/05

  • $& パターン全体がマッチした部分

  • $` マッチに先行する部分

  • $' マッチに続く部分

  • $+ 最後の括弧にマッチした部分

  • $_ 入力文字列全体

  • $$ $の文字そのもの

  • ${xxx} 名前付きキャプチャ参照 .NET Framework
    検索パターン (?<year>\d{4})年(?<month>\d{2})月(?<day>\d{2})日
    置換文字列 ${year}/${month}/${day}
    置換前 2010年05月05日
    置換後 2010/05/05

  • 特殊置換 拡張機能

    置換時に単独でしか使用できません。
    • [UPPER] 大文字に変換

    • [LOWER] 小文字に変換

    • [WIDE] 全角に変換

    • [NARROW] 半角に変換


    正規表現検索に戻ります

    トップに戻ります


    お探しの情報は見つかりましたか?
    まだの方はこちらをどうぞ。
    Google

    PageTop