正規表現の例

このページは、正規表現の例をまとめる予定のページです。

注意

  • 最初(^)と最後($)のアンカーは、複数行モード(例: C# の RegexOptions.Multiline)の場合は行の最初と最後にもマッチするようになります。どのモードでも必ず文字列の最初と最後にマッチさせたい場合は \A, \z を使用してください。
    • JavaScriptには\A, \zはありません。

一般的なパターン

半角英数
^[a-zA-Z0-9]+$
整数
^-?(?:0|[1-9]\d*)$
^-?(?:0|[1-9][0-9]*)$
正の整数
^(?:0|[1-9]\d*)$
^(?:0|[1-9][0-9]*)$
実数
^-?(?:0|[1-9]\d*|0)(?:\.\d+)?$
^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$
メールアドレス
^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$

特定の文字で区切られた最初の部分

^[^区切り文字]+

※ 文字クラスの否定([^])を使用して、「最初(^)から区切り文字が出現しない間の部分」にマッチさせます。

サンプル

文字列正規表現マッチする文字列
test^[^\.]+test
test.txttest
test.txt.baktest

特定の文字列で区切られた最初の部分

調べたい文字列に絶対に区切り文字列が入っている場合

^.+?(?=区切り文字列)

※ 先読み((?=))を使用して、「最初(^)から区切り文字列が出現しない間の部分」にマッチさせます。 .+の後ろに?を付けることで、.+に区切り文字自体が入るのを防ぐことができます。(最短マッチ)

調べたい文字列に区切り文字列が入っていない可能性がある場合

^.+?(?:(?=区切り文字列)|$)

(?:(?=区切り文字列)|$)」は、区切り文字がまったくなかった場合でも対応できるようにするもので、「区切り文字が後ろにある」((?=区切り文字列))か最後($)かどちら(|)か、という意味です。(?:)は通常の括弧(())でもよいですが、(?:)にしておくと無駄にキャプチャしなくて済みます。

サンプル

文字列正規表現マッチする文字列
test^.+?(?=<>)
test<>txttest
test<>txt<>baktest
test^.+?(?:(?=<>)|$)test
test<>txttest
test<>txt<>baktest

特定の文字列で区切られた最後の部分

調べたい文字列に絶対に区切り文字列が入っている場合

(?<=区切り文字列)(?!.*区切り文字列)+$

※ 後読み(戻り読み。(?<=))で「区切り文字が前にある」 + 否定先読み((?!))で「区切り文字が」のパターンにマッチしないことを先に確認してから、すべての文字列(.*)にマッチさせます。

調べたい文字列に区切り文字列が入っていない可能性がある場合

(?:^|(?<=区切り文字列))(?!.*区切り文字列)+$

(?:^|(?<=区切り文字列))」は、区切り文字がまったくなかった場合でも対応できるようにするもので、最初(^)か「区切り文字が前にある」((?<=区切り文字列))かどちら(|)か、という意味です。(?:)は通常の括弧(())でもよいですが、(?:)にしておくと無駄にキャプチャしなくて済みます。

サンプル

文字列正規表現マッチする文字列
test(?<=<>)(?!.*<>).+$
test<>txttxt
test<>txt<>bakbak
test<>txt<>ba<kba<k
test(?:^|(?<=<>))(?!.*<>).+$test
test<>txttxt
test<>txt<>bakbak
test<>txt<>ba<kba<k

特定の文字列を含まない

^(?!.*含みたくない文字).*

※ 最初(^) + 否定先読み((?!))を利用して対象の文字列が「.*含みたくない文字」のパターンにマッチしないことを先に確認してから、すべての文字列(.*)にマッチさせます。

サンプル

文字列正規表現マッチする文字列
テスト^(?!.*含みたくない文字).*テスト
含みたくない文字 / テスト
テスト / 含みたくない文字
テスト / 含みたくない文字 / テスト

前に特定の文字列を含まない

(?<!含みたくない文字.*)含めたいパターン

否定後読み(否定戻り読み。(?<!))を利用して含めたいパターンの前が「含みたくない文字.*」のパターンにマッチしないことを確認します。

サンプル

文字列正規表現マッチする文字列
テスト123(?<!含みたくない文字.*)テスト[0-9]+テスト123
含みたくない文字 / テスト456
テスト123 / 含みたくない文字テスト123
テスト123 / 含みたくない文字 / テスト456テスト123

後ろに特定の文字列を含まない

含めたいパターン(?!.*含みたくない文字)

否定先読み((?!))を利用して含めたいパターンの後が「.*含みたくない文字」のパターンにマッチしないことを確認します。

サンプル

文字列正規表現マッチする文字列
テスト123テスト[0-9]+(?!.*含みたくない文字)テスト123
含みたくない文字 / テスト456テスト456
テスト123 / 含みたくない文字
テスト123 / 含みたくない文字 / テスト456テスト456
テスト123 / 含みたくない文字 / テスト456^テスト[0-9]+(?!.*含みたくない文字)