正規表現の文字マッチング
「JavaScript 正規表現ミニブック」を読んでまとめたメモです。
正規表現は、文字と位置を照合できる照合パターンです。
以下では主に文字のマッチングの状況を紹介しますが、位置のマッチングの状況も勉強中です。
2 種類のあいまい一致:
1. 水平方向のあいまい一致: 通常の一致可能な文字列の長さは固定されていません。これを行うには、量指定子を使用します。たとえば、{m,n} は、文字が少なくとも m 回、最大で n 回連続して出現することを意味します。
たとえば、/ab{2,5}c/ は、次のような文字列と一致することを意味します。最初の文字は「a」、続いて 2 ~ 5 文字の「b」、最後に文字「c」です。 。
例: (手動で試して、得られる結果について考えることができます)
var regex = /ab{2,5}c/g; var string = "abc abbc abbbc abbbbc abbbbbc abbbbbbc"; console.log( string.match(regex) );
g は修飾子であり、グローバル一致、つまり、文字列内の一致条件を見つけることを意味します。すべての文字列を並べ替えます。
2. 垂直方向のあいまい一致: 通常の一致可能な文字列は、特定の文字に固有です。特定の文字である必要はなく、多くの可能性があります。実装方法は、/a[123]b/ などの文字グループ
を使用してそのような文字列に一致させることです。最初の文字は a で、2 番目の文字は '1'、'2 にすることができます。 '、' 3 つのうちのいずれか 1 つだけです。
量子 (繰り返し)
1. 一般的な省略形:
(1) {m,} は少なくとも m 回を意味します
(2) { m} は
が m 回出現することを意味します (3)? {0,1} と同等は
が出現するか出現しないことを意味します (4) {1,} と同等は少なくとも 1 回出現することを意味します
(5)* は {0,} に相当します。これは、何度でも出現できること、出現できないこと、または複数回出現する可能性があることを意味します。
2. 貪欲なマッチングと遅延マッチング
(1) 貪欲一致: /\d{2,5}/ は、数字が 2 ~ 5 回連続して出現し、可能な限り多く一致することを意味します。
var regex = /\d{2,5}/g; var string = "123 1234 12345 123456"; console.log( string.match(regex) ); // => ["123", "1234", "12345", "12345"]
(2)遅延マッチング: /\d{2,5} ?/ は、2 ~ 5 回で十分ですが、2 回で十分な場合はそれ以上試行しないことを意味します。
var regex = /\d{2,5}?/g; var string = "123 1234 12345 123456"; console.log( string.match(regex) ); // => ["12", "12", "34", "12", "34", "12", "34", "56"]
文字グループ
1. 範囲表現:
(1) 省略形を省略するには、ハイフン「-」を使用します。 [ 123456abcdefGHIJKLM] は [1-6a-fG-M] と書くことができます。
(2) 注: 一致した文字列にハイフンがある場合は、先頭または末尾にハイフンを置くか、- をエスケープします。
2. 文字グループを除外する: たとえば、[^abc]
は、特定の文字は何でもよいが、a、b、c であることはできないことを意味します。 ^ キャレットは否定を表し、対応する範囲表現もあります。
3. 一般的な略語形式:
(1) \d
は [0-9]
を意味します。 1 桁の
(2) \D
は [\^0-9]
を意味します。数字以外の任意の文字。
(3) \w
は [0-9a-zA-Z_]
を意味します。数字、大文字と小文字、アンダースコア。単語文字
とも呼ばれます (4) \W
は [^0-9a-zA-Z_]
を意味します。単語以外の文字
(5) \s
は [ \t\v\n\r\f]
を表します。スペース、水平タブ、垂直タブ、ラインフィード、キャリッジリターン、フォームフィードなどの空白文字を表します。
(6) \S
は [^ \t\v\n\r\f]
を意味します。空白以外の文字
(7) .
は [^\n\r\u2028\u2029]
を意味します。ワイルドカード文字。ほぼすべての文字を表します。例外には、改行、復帰、行区切り文字、および段落区切り文字が含まれます。
任意の文字と一致するには、 [\d\D]
、[\w\W]
、 、および [ Any ^]
のいずれか。
複数選択ブランチ
モードは水平方向および垂直方向のファジー マッチングを実現でき、複数選択ブランチは複数のサブモードのいずれかをサポートできます。
具体的な形式: (p1|p2|p3
) p1、p2、p3 はサブパターンです。
次の問題に注意してください。
var regex = /good|goodbye/g; var string = "goodbye"; console.log( string.match(regex) );
上の例で得られた結果は「良好」です
var regex = /goodbye|good/g; var string = "goodbye"; console.log( string.match(regex) );
この例で得られた結果は「さようなら」です
次の結論が得られます。ブランチ構造も Lazy です。つまり、前の一致が一致した場合、後続の一致は再試行されません。
推奨チュートリアル: 「JS チュートリアル 」
以上がJS正規表現文字マッチングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。