文字のグループに一致する正規表現を記述する方法

php中世界最好的语言
リリース: 2018-03-30 09:51:07
オリジナル
1419 人が閲覧しました

今回は、文字のグループに一致する正規表現の書き方と、文字のグループに一致する正規表現の注意事項について説明します。実際のケースを見てみましょう。

この記事の例では、

正規表現チュートリアルで文字のグループを照合する方法を説明します。参考として、次のようにみんなと共有してください。

注: すべての例では、正規表現の一致結果はソース テキストの [] の間に含まれています。一部の例は、Java を使用して実装されます。 Java 自体での正規表現の使用法については、対応する場所で説明します。すべての Java サンプルは JDK1.6.0_13 でテストされています。

1. 複数の文字のいずれかを一致させる

前回の記事「正規表現チュートリアル: 単一文字の一致の詳細な説明」では、na または sa で始まるテキスト ファイルを一致させる例で、使用した正規表現式は .a..txt です。 cal.txt という別のファイルがある場合は、それも照合されます。 na または sa で始まるファイルのみを一致させたい場合はどうすればよいですか?

n または s のみを検索したいので、任意の文字に一致する . を使用することは明らかに不可能です。正規表現では、[and] を使用して

文字セット

の組み合わせを定義できます。[and] を使用して定義された文字セットでは、これら 2 つのメタ文字間のすべての文字がセットの一部となり、文字セットの一致結果は次のようになります。セットの任意のメンバーと一致するテキスト。 前と同様の例を見てみましょう:

Text:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt。 txt

cal.txt

正規表現:

[ns]a..txt

結果:

sales.txt

【na1.txt】

【な2. 】

【sa1.txt】

sanatxt.txt

cal.txt

分析: ここで使用される正規表現は [na] で始まり、このセットは文字 n または s に一致します。他の文字には一致しません。 [ と ] はどの文字とも一致しません。文字のセットを定義するだけです。次に、 a は文字 a に一致し、 . 文字自体に一致し、 txt は txt 文字自体に一致し、一致結果は予想と一致します。

ただし、ファイルの 1 つが usa1.txt である場合、それも照合されます。これは後述する位置合わせの問題である。

2. 文字セット間隔を使用します

上記の例で、na または sa で始まり、その後に数字が続くファイルのみを照合したい場合はどうすればよいでしょうか?正規表現 [ns]a..txt では、. は数字を含む任意の文字と一致します。この問題は、文字のコレクションを使用して解決できます:

sales.txt

na1.txt

na2.txt

sa1.txt

san.txt

さなxt .txt

cal.txt

正規表現:

[ns]a[0123456789].txt

結果:

sales.txt

【na1.txt】

【 na2 .txt】

【sa1.txt】

さん.txt

sanatxt.txt

cal.txt

分析: 結果からわかるように、na または sa で始まりその後に数字が続くファイルのみが一致し、san.txt は一致しません。 set [0123456789] は、3 番目の文字を数字のみに制限するために使用されます。

正規表現では、0 ~ 9、a ~ z などの一部の文字間隔が頻繁に使用されます。文字間隔の定義を簡素化するために、正規表現では文字間隔を定義するための特別なメタキャラクタが提供されます。上の例と同様に、正規表現を使用して [ns]a[0-9].txt と一致させることができ、結果は上記とまったく同じになります。

文字間隔は数字に限定されません。以下は有効な文字間隔です:

[A-F]: A から F までのすべての大文字と一致します。

[A-Z]: A から Z までのすべての大文字と一致します。

[A-z]: ASCII 文字 A から ASCII 文字 z までのすべての文字と一致します。ただし、この間隔は一般的には使用されません。これは単なる例です。 ASCII の Z と a の間に配置される [ や ^ などの文字も含まれるためです。

文字範囲の最初と最後の文字には、ASCII 文字リスト内の任意の文字を使用できます。ただし、実際に使用する場合、最も一般的に使用される範囲は数字とアルファベットです。

注: 文字間隔を定義する場合、間隔の最後の文字を最初の文字より小さくすることはできません ([9-0] など)。 - メタキャラクターは [ と ] の間にのみ出現できるため、[ と ] の外側にある場合、それは単なる通常の文字であり、 - それ自体とのみ一致します。

同じ文字セットで複数の文字範囲を指定できます。たとえば、[0-9a-zA-Z] は、任意の大文字、小文字、数字と一致します。

Web ページ内の色の一致の例を見てください:

テキスト:

<span style="background-color:#3636FF;height:30px; width:60px;">测试</span>
ログイン後にコピー

正規表現: #[0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa - f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f]

結果: 【#3636FF】 ;height:30px; width:60px;">テスト

分析: Web ページでは、色は一般に # で始まる RGB 値として表され、R は赤、G は緑、B は青を表します。 、RGB のさまざまな組み合わせによって、あらゆる色をブレンドできます。 RGB 値は、白を表す #000000、黒を表す #FFFFFF、赤を表す #FF0000 のように 16 進数値で表されます。したがって、Web ページで色を一致させるための正規表現は # で始まり、その後に 6 つの同一の [0-9A-Fa-f] 文字セットが続きます (これは #[0-9A-Fa-f]{6} と省略できます)。これについては、「リピート マッチング」で後述します)。

3. 一致しない

文字セットを取得する取得する必要はありません。置き換えます。つまり、その文字セット内の文字を除いて、他の文字と一致する可能性があります。

たとえば、na または sa で始まり、数字が続かないファイルを照合するには:

Text:

sales.txt

na1.txt

na2.txt

sa1 .txt

sanatxt.txt

san.txt

正規表現: [ns]a[^0-9].txt

結果:

sales.txt

Na1.txt

na2.txt

sa1.txt

sanatxt.txt

san.txt】分析:この例で使用されるパターンは、まさに反対です。前のものは [0-9] は数字のみに一致しますが、ここでは [^0-9] は数字以外に一致します。 🎜

注: [ と ] の間の ^ は否定を意味します。正規表現の先頭にある場合は、位置一致が一致することを意味します。これについては後で説明します。同時に、^ の効果は、^ 文字の直後の文字または文字間隔だけでなく、特定の文字セット内のすべての文字または文字間隔に適用されます。たとえば、[^0-9a-z] は、数字や小文字に一致しないことを意味します。

4. 概要

メタキャラクター [および] は文字セットを定義するために使用され、その意味は、セット内の文字の 1 つと一致する必要があるということです。文字セットを定義するには 2 つの方法があります。1 つはすべての文字をリストする方法、もう 1 つは文字間隔の形式で指定されたメタ文字を使用する方法です。文字セットは、メタ文字 ^ を使用して否定できます。これにより、指定された文字セットが照合操作から強制的に除外されます。文字セット内の文字を除き、他の文字も照合できます。

次の記事では、正規表現でのいくつかのメタキャラクターの使用について説明します。

この記事の事例を読んだ後、あなたはその方法をマスターしたと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

JS パスワード強度検証の正規表現 (コード付き)

JQ の通常の検証メソッドには中国語を含めることはできません

以上が文字のグループに一致する正規表現を記述する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!