文字列の正規表現が含まれていますか?


113

文字列に特定の単語が含まれているかどうかを簡単に確認するための正規表現は何ですか(例: 'Test')。私はいくつかのグーグルを行いましたが、そのような正規表現のまっすぐな例を得ることができません。これはビルドスクリプト用ですが、特定のプログラミング言語には関係ありません。

回答:


77

通常のPCREスタイルの正規表現フレーバーを想定します。

あなたのようにそれを確認したい場合は、単一の、完全な言葉、それはです\bTest\b必要に応じて、ケース非感受性のための適切なフラグで、そしてあなたのプログラミング言語のための区切り文字。\b「単語の境界」、つまり単語の開始または終了と見なすことができる文字間のポイントを表します。たとえば、単語を区切るためにスペースが使用されているため、スペースの両側に単語の境界があります。

単語の一部としてそれをチェックしたい場合は、Test大文字小文字を区別しないように適切なフラグを付けただけです。この場合、正規表現の解析のオーバーヘッドがなくなるため、通常、この場合、専用の「サブストリング」メソッドの方が高速になる傾向があることに注意してください。


1
\bは、「単語の境界」、つまり2つの単語を区切るもの(スペースなど)を表します。」 \bスペースと一致しません。これは、文字(またはほとんどの場合、行の先頭または末尾)で一致するアサーションです。
ストレージャー、2011

1
@strager:はい、そうです-私の説明は少し不正確でした。編集します。
Michael Madsen

116

パターンを固定しないでください。

/Test/

上記の正規表現は、リテラル文字列「Test」がその中にあるかどうかをチェックします。


2
ありがとう、私はそれがそんなに簡単だとは知りませんでした!私は間違いなくこれをグーグルで見ませんでした。私のパターンを固定しないとはどういう意味ですか?
GurdeepS、2011

7
パターンをアンカーして文字列の最初または最後と一致させることができます。たとえば、それぞれ/ ^ Test /または/ Test $ /または/ ^ Test $ /で完全に一致させることもできます。この例は、等しいかどうかを比較するよりもメリットがありませんが、たとえば、フォームフィールドの検証を行う場合、/ ^ \ d + $ /のような正規表現は、フィールドに少なくとも1つの数字が含まれ、数字のみが含まれている場合にのみ一致します。
David Clarke、

-13

私は数年遅れていますが、なぜこれではないのですか?

[Tt][Ee][Ss][Tt]

4
この答えは、おそらくコードを説明しなかったために、低品質のレビューキューに入れられました。(回答で)説明すると、賛成票が増える可能性が高くなります。質問者は実際に何かを学びます。
帽子をかぶった男14

6
これはあまり一般化できません-検索しなければならない単語がユーザーから来たと想像してください。[Aa]すべての文字のパターンを生成する必要があり、かなり醜くかなり速くなります。
Platinum Azure
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.