クイックスタート
チュートリアル
ツールと言語
リファレンス
書籍レビュー
正規表現の例
数値範囲
浮動小数点数
メールアドレス
IPアドレス
有効な日付
数値の日付をテキストに変換
クレジットカード番号
完全な行のマッチング
重複行の削除
プログラミング
近接する2つの単語
落とし穴
カタストロフィックバックトラッキング
過剰な繰り返し
サービス拒否攻撃(DoS)
すべてをオプションにする
繰り返されるキャプチャグループ
Unicodeと8ビットの混在
このサイトの詳細
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書籍レビュー
印刷可能なPDF
このサイトについて
RSSフィードとブログ
RegexBuddy—The most comprehensive regular expression library!

正規表現のサンプル

以下に、独自の目的に使用および適用できる多くの正規表現パターン例を示します。 各正規表現の作成に使用される主要なテクニックについては、チュートリアルの対応するページへのリンクとともに説明しています。これらの概念とテクニックは、チュートリアルで詳しく説明されています。

正規表現を初めて使用する場合は、これらの例を確認して、何が可能かを確認できます。 正規表現は非常に強力です。 学習にはある程度の時間がかかります。 しかし、EditPad ProまたはPowerGREPで検索または編集タスクを自動化するために正規表現を使用する場合、またはさまざまな言語でスクリプトまたはアプリケーションを記述する場合、その時間はすぐに回収できます。

RegexBuddyは、正規表現を最速で習得する方法を提供します。 RegexBuddyは、あらゆる正規表現を分析し、理解しやすい詳細なアウトラインで表示します。 アウトラインはRegexBuddyの正規表現チュートリアル(このWebサイトにあるものと同じ)にリンクしており、シングルクリックでいつでも詳細な情報を取得できます。

ちなみに、正規表現を活用するためにプログラマーである必要はまったくありません!

HTMLタグの取得

<TAG\b[^>]*>(.*?)</TAG>は、特定のHTMLタグの開始タグと終了タグのペアに一致します。 タグの間にあるものはすべて、最初の後方参照にキャプチャされます。 正規表現の疑問符は、アスタリスクを非貪欲にし、貪欲なアスタリスクのように最後の終了タグの前ではなく、最初の終了タグの前に停止するようにします。 この正規表現は、次のような、自分自身の中にネストされたタグとは正しく一致しません。<TAG>one<TAG>two</TAG>one</TAG>.

<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>は、任意のHTMLタグの開始タグと終了タグのペアに一致します。 大文字と小文字の区別をオフにしてください。 このソリューションの鍵は、正規表現で後方参照を使用することです。\1タグの間にあるものはすべて、2番目の後方参照にキャプチャされます。 このソリューションも、自分自身にネストされたタグとは一致しません。

空白のトリミング

正規表現の検索と置換を実行することで、文字列の先頭と末尾、またはテキストファイルの行から不要な空白を簡単にトリミングできます。 次の文字列を検索します。^[ \t]+何も置換せずに、先頭の空白(スペースとタブ)を削除します。 次の文字列を検索します[ \t]+$末尾の空白をトリミングします。 正規表現を組み合わせることで両方を実行します。^[ \t]+|[ \t]+$。次ではなく[ \t]スペースまたはタブに一致する場合は、文字クラスを次のように拡張できます。[ \t\r\n]改行も削除する場合。 または、短縮形を使用できます\s代わりに使用できます。

より詳細な例

数値範囲。 正規表現は数値ではなくテキストで機能するため、特定の数値範囲を一致させるには、少し注意が必要です。

浮動小数点数の一致。 正規表現のすべてをオプションにするというよくある間違いも示しています。

メールアドレスの一致。 メールアドレスに一致する適切な正規表現については、多くの議論があります。 これは、何を一致させようとしているのか(そして何を一致させたくないのか)を正確に知る必要があること、そして正規表現の複雑さと正確さの間には常にトレードオフがあることを示す完璧な例です。

IPアドレスの一致.

有効な日付の一致。 31-12-1999には一致するが、31-13-1999には一致しない正規表現。

クレジットカード番号の検索または確認。 注文フォームに入力されたクレジットカード番号を検証します。 セキュリティ監査のためにドキュメント内のクレジットカード番号を見つけます。

完全な行の一致。 特定の要件を満たす行の一部ではなく、テキストファイル内の完全な行を一致させる方法を示します。 また、特定の正規表現が一致*しない*行を一致させる方法も示します。

重複する行または項目の削除。 キャプチャ括弧または後方参照のシンプルでありながら巧妙な使用方法を示しています。

ソースコードを処理するための正規表現の例。 コメント、文字列、数値など、一般的なプログラミング言語の構文を一致させる方法。

近接する2つの単語。 正規表現を使用して、一部のツールにある「near」演算子をエミュレートする方法を示します。

よくある落とし穴

カタストロフィックバックトラッキング。 正規表現の実行に永遠に時間がかかるように見える場合、または単にアプリケーションがクラッシュする場合は、カタストロフィックバックトラッキングが発生している可能性があります。 解決策は通常、一致させたいものをより具体的に指定することです。そのため、エンジンが試行する必要がある一致の数が指数関数的に増加しません。

すべてをオプションにする。 正規表現のすべてのパーツがオプションの場合、どこでも長さゼロの文字列と一致します。 正規表現では、どの部分が存在するかによって異なる部分がオプションであるという事実を表現する必要があります。

キャプチャグループの繰り返しと繰り返されるグループのキャプチャ。 キャプチャグループを繰り返すと、グループの最後の反復のみがキャプチャされます。 すべての反復をキャプチャする場合は、繰り返されるグループをキャプチャします。

Unicodeと8ビット文字コードの混在。次のような8ビット文字コードを使用する\x80Unicodeエンジンと対象文字列を使用すると、予期しない結果が生じる場合があります。