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

近くの2つの単語を見つける

ブール演算子を使用する一部の検索ツールには、「near」と呼ばれる特別な演算子もあります。「term1 near term2」を検索すると、互いに一定の「距離」内にあるterm1とterm2のすべての出現箇所が検出されます。距離は単語数です。実際の数は検索ツールによって異なり、多くの場合設定可能です。

適切な正規表現を使用すれば、同じタスクを簡単に実行できます。

正規表現で「near」をエミュレートする

正規表現を使用すると、近くの2つの単語に一致するパターンなど、ほぼすべてのテキストパターンを記述できます。このパターンは比較的単純で、3つの部分で構成されます。最初の単語、指定されていない単語の数、および2番目の単語です。指定されていない単語は、短縮文字クラス\w+で一致させることができます。単語間のスペースやその他の文字は、\W+(今回は大文字のW)で一致させることができます。

完全な正規表現は次のようになります。\bword1\W+(?:\w+\W+){1,6}?word2\b量指定子{1,6}?を使用すると、正規表現では「word1」と「word2」の間に少なくとも1つの単語が必要になり、最大6つの単語が許可されます。

単語が逆の順序で出現する可能性がある場合は、反対のパターンも指定する必要があります。

\b(?:word1\W+(?:\w+\W+){1,6}?word2|word2\W+(?:\w+\W+){1,6}?word1)\b

単語リストから任意の2つの単語のペアを見つけたい場合は、次を使用できます。

\b(word1|word2|word3)(?:\W+\w+){1,6}?\W+(word1|word2|word3)\b

最後の正規表現は、自分自身の近くの単語も見つけます。例えば、word2 near word2に一致します。