ホームページ バックエンド開発 PHPチュートリアル 正規表現の基本的な分析例の詳細

正規表現の基本的な分析例の詳細

Aug 29, 2019 am 11:57 AM
正規表現

正規表現は検証でよく使用されます。正規表現をもっと簡単に理解する方法を紹介しましょう。
まず最初に、通常の名前のネーミングについて話しましょう。

という言葉は誰もがよく知っていると思います。 "正規表現"。 Regular Expression の「 Regular 」は、一般的に「正規の」、「正規の」、「従来の」などと訳されます。ここでいう「正規」とは「規則」「規則性」という意味で、正規表現とは「ある規則を記述した表現」のことで、いわゆる正規表現です。実際、正規表現は特定の動作を規制するために使用されます。つまり、交通ルールを守らなければならないのと同じような制約です。
通常ルールの理解と理解は難しくないと個人的には感じています!覚えておくべきことをいくつか追加して、柔軟に使用するだけです。 ###わかりました!次に、規則性の本体について詳しく説明します。
まず、規則性の重要な点を見てみましょう。これらのことを理解できれば!通常、プロジェクトには問題はありません。

最初の "\"これは一般にエスケープ文字として知られており、文字を特殊文字またはリテラル文字としてマークします。たとえば、「n」は「n」と一致します。 「\n」の場合は改行文字です。
スラッシュ「\」だけを書きたい場合はどうすればよいか、誰かが尋ねるはずです。これもとても簡単です!このように「\\」と書くだけです!なぜ「\\」を2つ書くのか!ただ区別するためです。

2 番目の "^"これは一般に開始文字として知られており、正規表現を作成する準備ができたことを意味します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、^ は "\n" または "\r" の後の位置にも一致します。

3 番目の "$"これは一般に終了文字として知られており、エンディングとも言えます (非常に専門的ではない説明)。 RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は "\n" または "\r"

の前の位置にも一致します。4 番目の "*"これは前の位置と一致します。 1 つの 0 個以上の部分式。例: zo* は、「z」と「zo」または「zoo」に一致します。この "*" は、{0,}

と同等です。5 番目の " " は、前の部分式と 1 回以上一致します。たとえば、「zo」は「zo」と「zoo」または「zooo」に一致します。この「*」と「」はほぼ同じで、一方は0回から始まり、もう一方は1回から始まります。この「 」は {1,} に相当します。

6 番目の "?"これは、前の部分式と 0 回または 1 回一致します。たとえば、「do(es)?」は「do」または「does」と一致します。この疑問符は、0 回一致するか 1 回一致することを意味します。

7 番目の「{}」この記号は何回一致しますか?
1,{n} は特定の回数 n 回一致します。n は非負の整数 (例: "o{2}") は、good、food など、2 つの "oo" と一致することを意味します。ただし、o が 1 つしかないため、body と一致させることはできません。
2,{n,} は少なくとも n 回一致します。n は、「o{2,}」などの負ではない整数です。これは、good、good、などの 2 つ以上の「oo」と一致することを意味します。よし、など。 「o{1,}」は「o」と同等です。 「o{0,}」は「o*」と同等です。
3,{n,m} は最小 n 回一致、最大 m 回一致です。n と m は両方とも非負の整数であり、n

8 番目の「?」の特殊な使用法この文字が他のリミッター (*, ,?, {n}, {n, }, {n) の直後にある場合,m})、一致パターンは貪欲ではありません。いわゆる非貪欲モードは、最小限の方が良いことを意味します。非貪欲モードは、可能な限り少ない検索文字列と一致しますが、デフォルトの貪欲モードは、可能な限り多くの検索文字列と一致します。たとえば、文字列「oooo」の場合、「o ?」は単一の「o」と一致しますが、「o」はすべての「o」と一致します。

9 番目の「.」は、改行文字「\n」を除く任意の 1 文字と一致します。改行文字「\n」内の任意の文字と一致する場合は、「(.|\n)」パターンを使用します。

10番目の「パターン」この「パターン」がわかりにくく、初見では戸惑いました!ただし、これについての私の理解は次のとおりであり、皆様のお役に立てば幸いです:
1. ?:pattern はパターンと一致しますが、一致する結果は得られません (例: k(?:1|2|3) k) 123 のいずれかに一致します (例: k1|k2
2) ?=パターン ポジティブポジティブプレビュー 例: K(?=1|2|3) K が 123 のいずれかに一致する場合に K を選択します 例: k1 の k またはk# in k2 ##3. ?! パターンの前方ネガティブ プレビュー。例: k(?!1|2|3) K が 123 のいずれにも一致しない場合は、K を選択します。例: k1 の k と一致しませんが、 ?<=pattern 逆ポジティブ事前チェック、例: (?<=1|2|3)k K が 123 のいずれかに一致する場合、K を選択します。例: k in 1k または k in 2k K
5. ? になる可能性があります

11 番目の "|"
この記号は、または、たとえば: "f|good" は "f" または "good" と一致しますが、この場合はどうなるかを意味します。"(f|good) g)ood」は「food」または「good」と一致します。

12 番目の「[]」
この記号は文字セットの合計を意味します。「{}」と似ていますが、意味は大きく異なります。

13 番目の "()"
このシンボリック配列またはセット

1, [xyz] は、含まれる任意の文字と一致します。つまり、3つの中から1つを選択します。例: 「[abc]」は「company」の「a」と一致しますが、2 つの文字が使用されているため「Beautiful」と一致できません。
2. [^xyz] これは否定文字のセットであり、「非」とも言えます。例: 「[^abc]」は「drop」などと一致します。単語に「abc」の文字が含まれていない限り、問題ありません。
3. [a-z] 文字範囲。指定された範囲内の任意の文字と一致します。たとえば、「[a-z]」は、「a」から「z」の範囲内の任意の小文字の英字と一致します。 「[0-9]」と書くこともでき、これは 0 から 9 までの数字に直接一致します。
4. [^a-z] 誰もがそれが何を意味するのか知っておくべきであることは言うまでもないことだと思います! それはあなたが考えていることを意味します: 最初は「a」から「z」の範囲にない任意の文字これを見たとき、aとzの間ではない文字だと思いました!中国語では、a から z の間に文字がなければ「ü」だけがあると言いました。これは「ゆ」と読むそうですよ!ふふ!誰でもはっきりとわかります!それは文字ではなく文字です。

「\」と文字の特別な意味を見てみましょう
「\b」は単語と一致する境界、つまり単語とスペースの間の位置を意味します。たとえば、「er\b」は「never」の「er」と一致しますが、「verb」の「er」とは一致しません。こちらの方が覚えやすいと思いますので、「境界の端はbから始まる!」と覚えておくと良いでしょう。
"\B" は "\b" の逆で、単語以外の境界に一致します。 「er\B」は「動詞」の「er」と一致しますが、「never」の「er」とは一致しません。
"\d" はより頻繁に使用されます。これは [0-9] に相当する数字と一致します。
「\D」も分かりやすいですが、数字ではないという逆の意味もあり、[^0-9]と同等です。
"\f" はフォーム フィード文字と一致します。これに関しては、あまり説明する必要はありませんね!以下の4つは多すぎて説明しきれないほどです。覚えておいてください!プロジェクトで使用してください。
"\n" は改行文字と一致します。
"\r" は復帰文字と一致します。
"\t" はタブ文字と一致します。
"\v" は垂直タブ文字と一致します。
"\s" は、任意のヌル文字と一致し、スペース、タブ、フォーム フィードなどを含む任意の空白文字と一致します。 [ \f\n\r\t\v] と同等。つまり、これには上記の5つがすべて含まれています。
"\S" は、[^ \f\n\r\t\v] と同等の非空白文字です。
そういえば、レギュラールールって実はこのキャラたちだったんじゃないかと誰もが感じるかもしれませんね!そして、誰もが柔軟に使用できる限り、論理的思考によって推測できるものもあれば、繰り返し使用できるものもあります。

"\w" は、アンダースコアを含む任意の単語文字に一致します。 「[A-Za-z0-9_]」に相当します。これは実際によく使われるので、覚えておくことをお勧めします。

"\W" は単語以外の数字に一致します。 「[^A-Za-z0-9_]」と同等。 ######わかりました!基本的に、覚えておく必要があるのはこれだけです。正規表現の達人の中には「全然完成してないのでは?」と言う人もいるかもしれませんが、あらかじめ説明しておきますが、ここで書いたのはプロジェクトでよく使われる基本的なものだけで、より実践的なものです。基本的にはプロジェクトで使用できます。 . ご自由にお使いください。

次に、全員で実質的な作業を行い、正規表現を解析してみましょう。

たとえば、次の通常のルール: ^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5] ][0 -9])$
通常の正規表現の専門家なら、それが何であるか一目でわかると思います。もちろん、論理的思考が得意な人の中には、二回見ただけでこれが何であるかを理解する人もいます。はい、それは時間の法則です。

OK この「^」から始まるこの正規表現を分析しましょう。「([0-1]?[0-9]|2[0-3])」はグループです、「[0-1]」 ]?" この疑問符の機能は、0 または 1 が最大 0 個または 1 個存在できることです。「[0-9]」は 0 から 9 までの任意の数値です。「|」は「または」を意味します。 「[ 0-1]?[0-9]」ではなく「2[0-3]」です。「2[0-3]」は最初の 2、つまり 2、最後の 0 ~ 3 はいずれか 1 つです0 から 3 までの数値。「:」は「:」を意味します。「([0-5][0-9])」もグループです。「[0-5]」は 0 から 5 までの任意の数値です。 「[0-9]」は0から9までの任意の数字、「:」も本来の意味、「([0-5][0-9])」もグループ、「[0-5]」は0 ~ 5 の任意の数値。「[0-9]」は 0 ~ 9 の任意の数値、「$」はターミネータです。

みんなで小数を分析しましょう

例: ^[1-9] \d*(\.[0-9]{1,2})?|0(\.[0-9]{1,2})?$
"^" は開始文字、"[1-9]"、" " は 1 から 9 までの少なくとも 1 つ以上を意味します、"\d*"、この "\d" は数字、この "*" は少なくとも 0 個の数値または複数の数値、「(\.[0-9]{1,2})?」 このグループでは、「\.」が元の点、「[0-9]{1,2}」です。 「0 から 9 までの間に数字が 1 つまたは 2 つあります。その後ろにある疑問符「?」は、数字「(\.[0-9]{1,2})」が 0 つまたは 1 つあることを意味します。 "|" は "[1-9] \d*(\.[0-9]{1,2})?" または "0(\.[0-9]{1,2})?" のいずれかです。 。 "0(\.[0-9]{1,2})?" このグループの 0 が本来の意味で、このグループの "(\.[0-9]{1, 2})?」が本来の意味です。 本来の意味は、「[0-9]{1,2}」です。 0から9の間に数字が1つまたは2つあり、その後ろに疑問符「?」があることを意味します。 0 または 1 つの「(\.[0-9 ]{1,2})」。

以下に、一般的な正規表現の例をいくつか示します。

^[1-9]\d*$ //正の整数に一致
^-[ 1-9]\ d*$ //負の整数に一致
^-?[1-9]\d*$ //整数に一致
^[1-9]\d*|0$ //負でない整数に一致 (正の整数 0)
^-[1-9]\d*|0$ //正でない整数 (負の整数 0) に一致
^[1-9]\d*\.\ d*| 0\.\d*[1-9]\d*$ //正の浮動小数点数と一致
^-([1-9]\d*\.\d*|0\.\d* [1 -9]\d*)$ //負の浮動小数点数と一致
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d * |0?\.0 |0)$ //浮動小数点数と一致
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0 ?\.0 |0$ //非負の浮動小数点数(正の浮動小数点数0)と一致します
^(-([1-9]\d*\.\d*|0\.\d* [1- 9]\d*))|0?\.0 |0$ //非正の浮動小数点数(負の浮動小数点数 0)と一致
^[a-zA-Z][a-zA -Z0-9_]{ 4,15}$ //一致するアカウントが合法かどうか (文字で始まり、5 ~ 16 バイトが許可され、英数字のアンダースコアが許可されます)
^\s*|\s*$ //通常最初と最後の空白文字に一致する式
\n\s*\r //空白行に一致する正規表現
[^\x00-\xff] //2 バイト文字 (中国語文字を含む) に一致
[\u4e00-\ u9fa5] //中国語の文字に一致する正規表現

ユーザー名
^[a-z0-9_-]{3,16}$

パスワード
^[a -z0-9_-]{6,18}$

16 進値
##?([a-f0-9]{6}|[a-f0-9]{3 })$

メール
^([a-z0-9_\.-] )@([\da-z\.-] )\.([a-z\.]{2, 6 })$
^[a-z\d] (\.[a-z\d] )*@([\da-z](-[\da-z])?) (\.{1,2} [ a-z] ) $

URL
^(https?:\/\/)?([\da-z\.-] )\.([a-z\.]{2,6} ) ([\/\w \.-]*)*\/?$

IP アドレス
((2[0-4]\d|25[0-5]|[01] ? \d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

または
^ (?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(? : 25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

HTML タグ
^< ([a-z] )([^<] )*(?:>(.*)<\/\1>|\s \/>)$

上記は通常のルールに関するものです表現の基礎知識を具体例を交えて解説していますので、正規表現に戸惑う学生の参考になれば幸いです。間違いがあればご指摘ください。

その他の関連する質問については、PHP 中国語 Web サイトをご覧ください: PHP ビデオ チュートリアル

以上が正規表現の基本的な分析例の詳細の詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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 21, 2024 am 09:45 AM

PHP 正規表現の検証: 数値形式の検出 PHP プログラムを作成する場合、ユーザーが入力したデータを検証する必要がよくあります。一般的な検証の 1 つは、データが指定された数値形式に準拠しているかどうかを確認することです。 PHP では、正規表現を使用してこの種の検証を行うことができます。この記事では、PHP 正規表現を使用して数値形式を検証する方法を紹介し、具体的なコード例を示します。まず、一般的な数値形式の検証要件を見てみましょう。 整数: 0 ~ 9 の数字のみが含まれ、プラスまたはマイナス記号で始めることができ、小数点は含まれません。浮動小数点

正規表現を使用して Golang でメールアドレスを検証するにはどうすればよいですか? 正規表現を使用して Golang でメールアドレスを検証するにはどうすればよいですか? May 31, 2024 pm 01:04 PM

正規表現を使用して Golang で電子メール アドレスを検証するには、次の手順に従います。 regexp.MustCompile を使用して、有効な電子メール アドレス形式と一致する正規表現パターンを作成します。 MatchString 関数を使用して、文字列がパターンと一致するかどうかを確認します。このパターンは、次のようなほとんどの有効な電子メール アドレス形式をカバーします。 ローカル ユーザー名には文字、数字、および特殊文字を含めることができます: !.#$%&'*+/=?^_{|}~-` ドメイン名には少なくとも次の文字が含まれている必要があります。 1 文字の後に文字、数字、またはハイフンを続けます。トップレベル ドメイン (TLD) は 63 文字を超えることはできません。

Go で正規表現を使用してタイムスタンプを照合するにはどうすればよいですか? Go で正規表現を使用してタイムスタンプを照合するにはどうすればよいですか? Jun 02, 2024 am 09:00 AM

Go では、正規表現を使用してタイムスタンプを照合できます。ISO8601 タイムスタンプの照合に使用されるような正規表現文字列をコンパイルします。 ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ 。 regexp.MatchString 関数を使用して、文字列が正規表現と一致するかどうかを確認します。

Go言語の正規表現と文字列処理をマスターする Go言語の正規表現と文字列処理をマスターする Nov 30, 2023 am 09:54 AM

最新のプログラミング言語として、Go 言語は強力な正規表現と文字列処理関数を提供し、開発者が文字列データをより効率的に処理できるようにします。開発者にとって、Go 言語での正規表現と文字列処理を習得することは非常に重要です。この記事では、Go 言語の正規表現の基本概念と使い方、Go 言語を使用して文字列を処理する方法を詳しく紹介します。 1. 正規表現 正規表現は文字列のパターンを記述するためのツールであり、文字列の照合、検索、置換などの操作を簡単に実装できます。

PHP 正規表現: 厳密な一致とあいまいな包含の除外 PHP 正規表現: 厳密な一致とあいまいな包含の除外 Feb 28, 2024 pm 01:03 PM

PHP 正規表現: 完全一致と除外 ファジー包含正規表現は、プログラマがテキストを処理する際に効率的な検索、置換、フィルタリングを実行できる強力なテキスト マッチング ツールです。 PHP では、正規表現は文字列処理やデータ マッチングにも広く使用されています。この記事では、PHP で完全一致を実行し、あいまい包含操作を除外する方法に焦点を当て、具体的なコード例を使用して説明します。完全一致 完全一致とは、バリエーションや余分な単語ではなく、正確な条件を満たす文字列のみと一致することを意味します。

Goで正規表現を使用してパスワードを確認するにはどうすればよいですか? Goで正規表現を使用してパスワードを確認するにはどうすればよいですか? Jun 02, 2024 pm 07:31 PM

Go で正規表現を使用してパスワードを検証する方法は次のとおりです。 パスワードの最小要件 (小文字、大文字、数字、特殊文字を含む少なくとも 8 文字) を満たす正規表現パターンを定義します。 regexp パッケージの MustCompile 関数を使用して正規表現パターンをコンパイルします。 MatchString メソッドを使用して、入力文字列が正規表現パターンと一致するかどうかをテストします。

正規表現のワイルドカードとは何ですか? 正規表現のワイルドカードとは何ですか? Nov 17, 2023 pm 01:40 PM

正規表現のワイルドカードには、「.」、「*」、「+」、「?」、「^」、「$」、「[]」、「[^]」、「[a-z]」、「[A-Z]」が含まれます。 、"[0-9]"、"\d"、"\D"、"\w"、"\W"、"\s&quo

漢字フィルタリング: PHP 正規表現の練習 漢字フィルタリング: PHP 正規表現の練習 Mar 24, 2024 pm 04:48 PM

PHP は広く使用されているプログラミング言語であり、特に Web 開発の分野で人気があります。 Web開発の過程では、ユーザーが入力したテキストをフィルタリングして検証する必要がよくありますが、その中でも文字フィルタリングは非常に重要な操作です。この記事では、PHP で正規表現を使用して漢字フィルタリングを実装する方法と、具体的なコード例を紹介します。まず最初に、Unicode の漢字の範囲は u4e00 から u9fa5 までである、つまりすべての漢字がこの範囲内にあることを明確にする必要があります。

See all articles