目次
正規表現の学習(継続的に更新)" >正規表現の学習(継続的に更新)
3. 単純な正規表現" >3. 単純な正規表現
8. 対義語" >8. 対義語
(exp)" >(exp)
10. ゼロ幅アサーション" >10. ゼロ幅アサーション
11. 否定的なゼロ幅アサーション" >11. 否定的なゼロ幅アサーション
文字列の一致の問題に対処する場合、通常の動作は、できるだけ多くの文字を一致させることです。式 a.*b と文字列 aabab を例にとると、ab ではなく aabab が一致します。この一致ルールは貪欲一致と呼ばれます。 " > 文字列の一致の問題に対処する場合、通常の動作は、できるだけ多くの文字を一致させることです。式 a.*b と文字列 aabab を例にとると、ab ではなく aabab が一致します。この一致ルールは貪欲一致と呼ばれます。
14. 処理オプション" >14. 処理オプション
15. バランスのとれたグループ/再帰的マッチング" >15. バランスのとれたグループ/再帰的マッチング

正規表現の基礎を学ぶ

Mar 14, 2018 pm 12:52 PM
ベース 通常 表現

この記事では JavaScript正規表現 について説明します。JavaScript の正規表現に慣れていない人は、気軽に学習してください。よく知っているので、見てみましょう!

正規表現の学習(継続的に更新)

今日は

JavaScriptを学習しながら、RegExpオブジェクトを学びました。波を学ぶ機会はとても快適です。

参考サイト:

正規表現30分入門クリックしてリンクを開きます

1. 正規表現とは

正規表現とは、

文字列のマッチングを表現するために使用されるルールです。

2. 正規表現の関連概念

2.1

メタキャラクター

メタキャラクターは、正規表現で指定される特殊な記号であり、特定のルールを置き換えるために正規表現に追加されます。

bは、単語の先頭または末尾を表します.は、改行を除く任意の文字を表します* は、*など、*の前に表示される任意の数の文字を表しますは、その前に任意の数の a (0 回以上繰り返される) があることを意味します
+
は、+ の前に任意の数の文字が現れることを意味します。たとえば、 、a+ は、a の前に任意の数字があることを意味します (1 回以上繰り返します)
? 0 回または 1 回繰り返します{n}n回繰り返します{n, }Repeat n 回以上 {n, m} n から m 回繰り返します D
は 0 ~ 9 のデジタルを示します w
マッチレターまたは数字またはアンダースコアまたは漢字ラインブレーク、中国の全幅スペースなど。
文字列の末尾と一致します
^ 文字列の先頭と一致します

3. 単純な正規表現

例から直接開始します:

例 1: hello という単語と一致させたい場合、記述された正規表現 (一致ルール) は次のとおりです: hello

これはすべてに一致します。 helloworld などの hello を含む単語も照合されますが、hello のみに照合したい場合は、メタキャラクター b を使用して hello の前後を区切って、別の単語 hello を形成する必要があります。 は正規表現です。式は次のようになります。 be: bhellob

例 2: 探している hello の後に任意の文字が続く場合、メタ文字と * を使用する必要があります。 正規表現は bhellob.*worldb

の例です。 3: 021-xxxxxxx のような電話番号を一致させたい場合は、021-ddddddd を使用する必要があります。「021-」は特別な意味を示さない単純な文字であり、後で使用される d はメタキャラクターです。この正規表現は 021-d{7} と省略できます。これは、d が 7 回繰り返されることを意味します。

例 4: 1 つ以上の連続する数字と一致する、d+

例 5: a で始まる単語と一致する、baw*b

例 6: 5 ~ 12 桁の QQ 番号と一致する、^d{ 5, 12}&

4. 文字エスケープ

検索したい文字列にメタ文字がある場合は、メタ文字を通常の文字に変換するためにメタ文字の前に追加する必要があります。

5. 文字クラス

このパートで解決される問題は、一致させたい文字に対応するメタ文字がない場合にどうするかということであり、文字クラスを手動で作成する必要があります。

たとえば、0 ~ 9 の数字に一致する d がない場合、0 ~ 9 の任意の数字を見つけたい場合は、[0-9] の文字クラスを作成できます。これは、次とまったく同じ効果があります。 d.

たとえば、正規表現 (?0d{2}[)、-]?d{8} を使用して電話番号を照合できます。順番に説明します。

( はエスケープ (、? は 0 または 1 を繰り返すことを意味します) を意味します。時間、dは2つの数字を表します、[)、-]は)と-の文字クラスを表します、? は、0 または 1 回の後に 8 つの数字が続くことを意味します。

6. 分岐条件

上記

(?0d{2}[), -]?d{8} のような正規表現は (01012345678 または (010-12345678 など) に一致する可能性があります。正しい文字列の場合は、このような状況では、分岐条件を使用できます。分岐条件は、js の論理演算子と似ており、条件が左から右に判断されると終了します。 上記の状況の場合、(0d{2})d{8}|0d{2}-d{8}|(0d{2})d{8}

7 と記述できます。

この部分は、単一の文字ではなく複数の文字が繰り返される問題を解決するためのものです。単一の文字を繰り返す場合、文字 + メタ文字で修飾子を使用できますが、複数の繰り返し文字がある場合は、() を追加できます。たとえば、次の正規表現を使用して IP アドレス

(2[0-4]d|25[0-5]|[01]dd?.){ . 3}(2[0-4]d|25[0-5]|[01]?dd?)

8. 対義語

xxx 以外の文字など、簡単に定義できない文字を検索する必要がある場合は、対義語

string9 .後方参照
W

を使用する必要があります。文字、数字、アンダースコア、または漢字ではありません

D は、数字ではない任意の文字と一致します
B は、単語の先頭または末尾ではない任意の文字と一致します
S は空白以外の文字に一致します
[^x] はS+&以外の文字に一致します

コンテンツのこの部分は前のグループ化と一致します。文字をグループ化した後、() でグループ化する場合は、後でこのグループ化を参照し続けることができます。 ( の出現順に 1 から始まります。たとえば、正規表現 b(w+)s+1b を使用できます。 go go などの繰り返しの単語と一致させるには、ここでは前に出現したグループが 1 を通じて参照されます。 その他の関連する後方参照構文は次のとおりです:

(exp)

match exp 、および現在のコンテンツを自動グループにキャプチャします

expを照合し、現在のコンテンツをキャプチャし、グループ名を割り当てます

(?:exp) exp と一致し、キャプチャされたコンテンツにグループ名を割り当てません

10. ゼロ幅アサーション

は、コンテンツの特定の部分の前後にあるが、そのコンテンツが含まれていない部分を検索するために使用されます。

正規表現(?=exp)とは、後から出てくる部分が式expと一致することを主張することを意味します。たとえば、bw+(?=ingb) は、ing で終わる単語の先頭部分と一致します。例えば、「I'm dance and sing」で検索すると、dance and singがマッチします(w+があるのでsではマッチしません)。

正規表現 (?<=exp) は、前の部分が式 exp と一致する可能性があることを表明することを意味します。たとえば、(?<=bre)w+b は、re で始まる単語の後半に一致します。たとえば、読みを検索する場合は、ading が一致します。

長い数値の 3 桁ごとにカンマを追加する場合、たとえば 123456789 にカンマを追加する場合は、正規表現 ((?<=d)d{3})+b を使用できます。 、検索結果は 234567890 です (検索ルールのこの部分がわかりません...)

次の例では、2 つのアサーションを同時に使用しています (?=

一般に、ゼロ幅アサーションの目的は、特定の規則に従って、一致する文字の開始点または終了点を決定することです。

11. 否定的なゼロ幅アサーション

前述のように、特定の文字ではないもの、または特定の文字内にないものを見つけるには反意語を使用します。

たとえば、文字 q が出現するがその後に u が続かない単語を検索したい場合。 bq[^u]w*b と書くかもしれません。しかし、そのような式の場合、単語の末尾に q が現れるとエラーが発生します。これは、[^u] が単語の区切り文字と一致し、次の単語と一致し、イラク戦闘などの文字と一致するためです。 。 弦。

反意語の占有問題を解決するには、負のゼロ幅アサーションを使用できます。これは、1 つの位置にのみ一致し、文字を消費しないためです。上の式は bq(?!u)w*b と書くことができます。

同様に、exp が前にない文字と一致するには (?

より複雑な例: (?<=<(w+)>).*(?=)

前の内容を参照してください (?< =)とそれに続く (?=) は、前と後ろの両方がゼロ幅のアサーションであり、<(w+)> が HTML タグを表すことがわかります。前のものが の場合、後続のアサーションはゼロ幅になります。アサーションは < ;/h> を意味します (エスケープと後方参照が使用されます)。したがって、この正規表現は HTML タグ間の部分を照合するものです。

12. コメント

には、2[0-4]d(?#200-249) などの構文 (?#comment) によるコメントが含まれます。

13. 貪欲と怠惰

文字列の一致の問題に対処する場合、通常の動作は、できるだけ多くの文字を一致させることです。式 a.*b と文字列 aabab を例にとると、ab ではなく aabab が一致します。この一致ルールは貪欲一致と呼ばれます。

場合によっては、できるだけ少ない文字で遅延マッチングを行う必要があります。この場合、上記の修飾子の後に追加する必要がありますか? 、 a.*?b などの貪欲マッチングは遅延マッチングに変換されます。このとき、aab (文字 1 ~ 3) と ab (文字 4 ~ 5) が一致します (具体的な理由は正規表現の一致ルールに関係します)。 。

14. 処理オプション

jsのフラグと同様に、大文字と小文字を区別しない、複数行モード、グローバルモードなどがあります。

15. バランスのとれたグループ/再帰的マッチング

この部分は、たとえば、数式で (5*3))) をマッチングしたい場合に扱います。単に (. *) として記述することはできず、式全体と一致します。次に、採用すべきマッチング戦略は、これまでに学習したブラケット マッチング問題と同様です。スタックを使用してスタックをポップする場合、最後のスタックが空の場合、これは、スタックを使用して解決します。式内の括弧が完全に一致する場合 空でない場合、正規表現エンジンは括弧を一致させるためにバックトラックします。

関連する推奨事項:

JS で正規表現を使用する方法


以上が正規表現の基礎を学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP正規表現で何かで始まる文字列を置換する方法 PHP正規表現で何かで始まる文字列を置換する方法 Mar 24, 2023 pm 02:57 PM

PHP 正規表現は、テキストの処理と変換のための強力なツールです。テキスト コンテンツを解析し、特定のパターンに従って置換またはインターセプトすることで、テキスト情報を効果的に管理できます。その中でも、正規表現の一般的な応用例は、特定の文字で始まる文字列を置換することです。

Golang 正規表現を使用して複数の単語または文字列を照合するにはどうすればよいですか? Golang 正規表現を使用して複数の単語または文字列を照合するにはどうすればよいですか? May 31, 2024 am 10:32 AM

Golang の正規表現では、パイプ文字 | を使用して複数の単語または文字列を一致させ、各オプションを論理 OR 式として区切ります。例: 「fox」または「dog」に一致します: fox|dog は「quick」、「brown」または「lazy」に一致します: (quick|brown|lazy) 「Go」、「Python」または「Java」に一致します: Go| Python |Java は単語または 4 桁の郵便番号と一致します: ([a-zA

PHP 基礎チュートリアル: 初心者からマスターまで PHP 基礎チュートリアル: 初心者からマスターまで Jun 18, 2023 am 09:43 AM

PHP は、Web 開発のすべてのタスクを処理できる、広く使用されているオープン ソースのサーバー側スクリプト言語です。 PHP は Web 開発で広く使用されており、特に動的データ処理における優れたパフォーマンスのため、多くの開発者に愛され、使用されています。この記事では、初心者が入門から上級者になるまでをサポートするために、PHP の基本をステップごとに説明します。 1. 基本構文 PHP は、コードが HTML、CSS、および JavaScript に似ているインタープリター型言語です。すべての PHP ステートメントはセミコロンで終わります。

正規表現を使用してPHPで漢字を削除する方法 正規表現を使用してPHPで漢字を削除する方法 Mar 03, 2023 am 10:12 AM

正規表現を使用して PHP で中国語を削除する方法: 1. PHP サンプル ファイルを作成する; 2. 中国語と英語を含む文字列を定義する; 3. "preg_replace('/([\x80-\xff]*)/i', '',$a);" 通常の方法では、クエリ結果から中国語の文字を削除できます。

通常のマッチングを使用してphpでhtmlタグを削除する方法 通常のマッチングを使用してphpでhtmlタグを削除する方法 Mar 21, 2023 pm 05:17 PM

この記事では、PHP 正規表現を使用して HTML タグを削除し、HTML 文字列からプレーン テキスト コンテンツを抽出する方法を学びます。 HTML タグを削除する方法を示すために、まず HTML タグを含む文字列を定義しましょう。

PHP 正規表現を使用して URL が HTTPS プロトコルであるかどうかを確認する方法 PHP 正規表現を使用して URL が HTTPS プロトコルであるかどうかを確認する方法 Jun 24, 2023 am 08:16 AM

Web サイトのセキュリティはますます注目を集めており、HTTPS プロトコルを使用してデータ送信のセキュリティを確保することが、現在の Web サイト開発の重要な部分となっています。 PHP 開発において、正規表現を使用して URL が HTTPS プロトコルであるかどうかを確認するにはどうすればよいですか?ここで私たちはそれを知りに来ました。正規表現 正規表現は、ルールを記述するために使用される表現です。テキストを処理するための強力なツールであり、テキストの一致、検索、置換に広く使用されています。 PHP 開発では、正規表現を使用して URL 内の http と一致させることができます。

PHP 正規表現を使用して中国語置換関数を実装するためのヒントを共有する PHP 正規表現を使用して中国語置換関数を実装するためのヒントを共有する Mar 24, 2024 pm 05:57 PM

PHP 正規表現を使用して中国語の置換機能を実装するためのヒントを共有する Web 開発では、中国語のコンテンツを置換する必要がある状況によく遭遇します。人気のサーバーサイド スクリプト言語として、PHP は中国語の置換を簡単に実現できる強力な正規表現機能を提供します。この記事では、正規表現を使用して PHP で中国語置換を実装するためのテクニックをいくつか紹介し、具体的なコード例を示します。 1. preg_replace 関数を使用して中国語置換を実装します PHP の preg_replace 関数を使用できます

PHP 定期置換例: 置換スキルを素早くマスター PHP 定期置換例: 置換スキルを素早くマスター Feb 29, 2024 pm 06:33 PM

PHP の定期置き換え例: 置き換えスキルをすぐにマスターする インターネットの発展に伴い、Web サイトの開発はますます一般的になりました。 Web サイトの開発では、文字列の置換が必要になることがよくあります。正規表現は、文字列をすばやく検索して置換できる非常に強力なツールです。この記事では、PHP 言語で正規表現を使用して置換操作を実行する方法を紹介し、読者が置換テクニックをすぐに習得できるように具体的なコード例を示します。 1.PHPのpreg_replace関数、pregを使用できます

See all articles