検索
ホームページバックエンド開発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 と一致しませんが、 ?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 タグ
^(.*)|\s \/>)$

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

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

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

声明
この記事は博客园で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。Apr 17, 2025 am 12:22 AM

HTTPキャッシュヘッダーの主要なプレーヤーには、キャッシュコントロール、ETAG、およびラスト修飾が含まれます。 1.Cache-Controlは、キャッシュポリシーを制御するために使用されます。例:キャッシュコントロール:Max-Age = 3600、public。 2。ETAGは、一意の識別子を介してリソースの変更を検証します。例:ETAG: "686897696A7C876B7E"。 3. Last-Modifiedは、リソースの最後の変更時間を示しています。

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHP:サーバー側のスクリプト言語の紹介PHP:サーバー側のスクリプト言語の紹介Apr 16, 2025 am 12:18 AM

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPとWeb:その長期的な影響を調査しますPHPとWeb:その長期的な影響を調査しますApr 16, 2025 am 12:17 AM

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

なぜPHPを使用するのですか?利点と利点が説明されましたなぜPHPを使用するのですか?利点と利点が説明されましたApr 16, 2025 am 12:16 AM

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール