目次
共通メタキャラクター
ユニットです
説明 - 特殊なケース
上級 2 - グループ化と後方参照
グループ化
Look around はどの文字にも一致せず、テキスト内の
高から低
1Q: 文字列

正規表現の詳しい解説

Jul 01, 2019 pm 04:25 PM
正規表現

正規表現の詳しい解説

正規表現言語は、リテラル (通常の) テキスト文字とメタキャラクターという 2 つの基本的な文字タイプで構成されます。

関連する推奨事項:
1. 正規表現構文チュートリアル (オンライン テスト ツールを含む)
2. PHP 正規表現の簡単な紹介ビデオ チュートリアル

メタキャラクターは正規表現を使用して処理できます。メタキャラクターは、[ ] に配置された任意の 1 文字 (たとえば、[a] は 1 つの小文字 a と一致することを意味します)、または一連の文字 (たとえば、[a-d] は、a、b、c、d の間の任意の文字と一致することを意味し、\w は任意の英字、数字、アンダースコアを意味します)、共通メタキャラクター

共通メタキャラクター

改行文字 (~## を除く任意の文字と一致します。 #[abcde]a b c d e または # です##. 関係 [a-h] から [^fgh]##. を追加します 大文字、小文字の英語文字、および 0 ~ 9 の数字と一致します。 とアンダースコアの間にある 1 つは と同等です。 [a-zA-Z0-9_] は [^a-zA-Z0-9_] は任意の空白文字に一致します。~ は の逆で、[^\s] は、0 ~ 9 の任意の 1 桁に一致し、 と同等です。 ~##\D\d[^0- と同等です。 9] 中国語文字と一致します(中国語) Unicode エンコーディングで表される中国語の文字が使用されます) ## という逆数を意味する #文字列の末尾と一致する ユニット
文字 説明 特別な指示
#. \n)
の任意の文字と一致します。すべての文字は
は、a h までの任意の文字と一致します。 #~
と一致しません fgh の文字は # と一致します 否定を示すには、角括弧 [ ] の最初の文字の前に #^ 角括弧内にある文字とは一致しません括弧 \w
#~ ##\W は ## の反対です#\w
~ \s と同等です [\f\n\r\t\v]
と同等です。 \S \s
~ と同等です。 \d [0-9]
# は の逆で、
~ #[\u4e00-\u9fa5] 任意の単一の (ここでは、
~ \b 単語の先頭または末尾と一致します。 ~
^ 単語の先頭と一致します。文字列 を括弧の最初の文字の前に置くと、
$ になります。 ~
正規表現修飾子 関数: の出現数を制限します。この記号の前の ユニット:
前の文字が文字の場合、この文字 文字は

ユニットです

#以前に長い文字列を囲むためにかっこを使用した場合は、かっこ全体が ユニットとみなされます
上記のメタ文字はすべて一致します。単一の文字。複数の文字を同時に一致させたい場合は、修飾子を使用する必要があります。一般的な修飾子をいくつか次に示します (下の表の

n
    と m は両方とも
  1. integer## を表します) #。 )
  2. キャラクター
  3. 説明

特別な指示

# は、0 から複数のメタキャラクタに一致します。~ と同等です。 は 0 ~ 1 個のメタキャラクタに一致します。~## と同等です。 {1,} と同等です。 {n}{n, }{n,m}\b文字列は指定された文字で始まる必要があります文字列は指定された文字で終わる必要があります

説明 - 特殊なケース

  1. 複数のメタ文字またはリテラル テキスト文字を 括弧で囲んで、 ^ などの グループ を形成できます。 (13)[4-9]\d{8}$ は、13 で始まる任意の携帯電話番号を表します。
    1. abcabcabc は 1 回以上出現する最後の文字 c を表し、
    2. (abcabcabc) は文字列全体を表しますabcabcabc が 1 回以上表示されます。
  2. | を使用して または の関係を示すことができます。たとえば、z|j|q は次のことを示します。一致する z、j、q の任意の文字。実際、これは [zjq] と同等です。
    1. ab|cd|ef は、abcd、または ef のいずれかを意味します。
    2. a(b|cd|e)f の意味: a で始まり、b または cdどちらか ef で終わります。
    3. 概要: | ( または ) の唯一の境界は 括弧 (( ))
  3. #[0-9A-Z.?] この規則をどのように理解していますか?
    1. .? 角括弧内にある場合、.? となります。 通常の文字。ドットと疑問符です。 [ ] の優先度が . や ? の優先度よりも高いことがわかります。
    2. この正規表現は、文字列
    3. ?aaa.bbb と正確に一致します。ここで、. と ? は完全に通常の文字として扱われることに注意してください。
上級 1 - 複数選択構造

複数選択構造は、実際にはメタキャラクター

| (または) を使用します。 定義範囲: 先頭、末尾、括弧

{0,}
? {0,1}
# は少なくとも 1 つのメタキャラクターに一致します。 ~
n 個のメタ文字に一致 ~
少なくとも n 個のメタ文字に一致します~
n ~ m 個のメタ文字に一致します~
単語の境界を一致させる ~ #^
~ $
~
通常意味 は、 # と一致します^Windows98|Windows2000|WindowsXP$Windows98Windows(98|2000|XP)Windows

概要: 複数選択構造には多くの文字を含めることができますが、括弧の境界を超えることはできません。

上級 2 - グループ化と後方参照

グループ化

  • 単一文字を繰り返す方法はすでに知っています;
  • しかし、文字列を繰り返したい場合はどうすればよいですか? 括弧を使用して部分式 (グループ化とも呼ばれます) を指定できます。
  • (\d{1,3}\.){3}\d{1,3} 単純な IP アドレス一致式
  • ただし、次の式にも一致します。不可能な IP アドレス
  • 256.300.888.999。もっと正確な正規表現を書けますか?
  • ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4] \d|25[0-5]|[01]?\d\d?)
後方参照

    括弧を使用してサブを指定します。式 (
  • grouped) を使用すると、この部分式に一致するテキストを キャプチャして、式内または他のプログラム内でさらに処理することができます。
  • デフォルトでは、各グループには自動的にグループ番号が付けられます。ルールは次のとおりです:
  • グループの 左括弧 を記号として、左から右に最初のグループ番号 グループ番号は 1、2 番目は 2、というように となります。

例:

  • #\b(\w )\b\s \1\b は重複を照合するために使用できます
  • という単語は、次のような単語と一致します:
  • where where go, tom tom happy
## 簡単な説明: 正規表現内の

を使用して前に括弧を使用して分割 (グループ化) し、その後、括弧 と引用符
で一致した内容を \1\2## を使用して後ろに配置します。 #などで表します。 (最初のかっこは \1...)括弧内に括弧が入れ子になっている場合 (\w (.?)) 覚えておいてください: この時点では、括弧を左から右に数える記号として ( を使用する必要があります。 .上級 3 - Look Around (ゼロ幅アサーション)

Look around はどの文字にも一致せず、テキスト内の

特定の位置
    にのみ一致します。 # に似ています。 ## \b
  • , #, $ like that. 周りを見回すと文字数が占有されません。 周りを見渡すと # に分かれます## order reverse order
  • には 2 種類があります:
  • order(?=exp)
      次の
    • 位置
      • exp と一致します。例: (?=\d) 現在の位置の右側は数値です。(? !exp) 次の 位置は一致できません
      • exp 例: (?!\d) 現在の位置の右側逆順
      (?<=exp)
    • 位置の前の
    • は # と一致します。
        ##exp
      • 。例: (?<=\d) 現在位置の左側 数値 (?&lt ;!exp)。位置の前の
      • exp
      • と一致することはできません。例: (?!\d )現在の位置は数値ではありません。
      • Advanced 4 - Greed and Lazy
    正規表現が含まれている場合
  • quantifier
(

    *
  • {3,12} などの指定された数のコード) を繰り返すことができます。 , 通常の動作は、できるだけ多くの文字と一致することです . 正規表現: a.*ba# で終わる最長の文字と一致します。 ## で始まり b
  • で終わる文字列。これを使用して
  • aabab を検索すると、文字列 aabab 全体と一致します。これは -- と呼ばれます。 -----貪欲なマッチング-さらに遅延マッチング、つまり指定されたとおりにできるだけ少ない文字をマッチングする必要があります。上記のすべての量指定子は、遅延マッチング パターンに変換できます。 後ろに疑問符を追加するだけです。
  • ?
  • 。このように、
  • .*? は、任意の数の一致を意味します。ただし、 全体が正常に一致するという前提で、最も繰り返しの少ない を使用します。a.*?b は、 で始まる最も短いものと一致します。 ab
  • で終わる文字列。
  • aabab に適用すると、 aabab に一致します。 概要: 貪欲モードと遅延モードの違いは次のとおりです: 遅延モード
  • は数量詞の後ろにあります
*

疑問符

?
がもう 1 つあります。

上級 5 - パターン マッチングの優先順位正規表現を使用する場合は、マッチングの順序に注意する必要があります。通常、同じ優先度 が左から右の に計算され、異なる優先度

を持つ操作は最初に高く、次に
が低くなります。さまざまな演算子の一致順序の優先順位は、次の表に示すように

高から低

です。

Windows98|Windows2000|WindowsXP Windows98 または Windows2000 または WindowsXP
で始まるか、Windows2000 が含まれるか、または WindowsXP で終わる注|
の境界は先頭、末尾、括弧のみであるため、# と $ は両方とも | の範囲に含まれます。
その後98 または 2000 orXP
1エスケープ文字2 3*4##5例1. 文字エスケープ
#注文 メタキャラクター 説明
\
()(?:)(?=)[] #モード単位と原子テーブル
, ,? {n}{n,}{n,m}重複一致
$\b\B\A\Z国境制限
| パターンの選択

1Q: 文字列

333333\$33\ と一致するには、次のようにします。 33333

\$

と書きますか? 2 質問: PHP の preg_match 関数が、上記の \$# # と一致させるために
一重引用符 二重引用符 の式を使用している場合#、書き方? 答え:

式に必要なルールは \\\$

    一重引用符を使用してください上記の文字列
  • '/\\\\\\$/' を表現します。 (見やすくするために、'/\\ \\ \\ $/'
  • に分割しています)
  • 上記の文字列を表すには二重引用符を使用します "/\\ \\ \\\$/「。 (見やすくするために、"/\\ \\ \\ \$/"
  • に分割しています)
  • 何を質問していますか?
  • 別の答え:

PHP の一重引用符は文字をエスケープせず、\ のみをエスケープします。式を生成するには 6

\
    が必要です。
  1. エスケープ \ に加えて、二重引用符は
  2. $
  3. をエスケープするためにもう 1 つの

    \ も必要となるため、7 つの ## が必要になります。 #\ 推奨される関連チュートリアル: 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

Golangで正規表現を使用してURLを検出するにはどうすればよいですか? Golangで正規表現を使用してURLを検出するにはどうすればよいですか? May 31, 2024 am 10:32 AM

正規表現を使用して Golang で URL を検出する手順は次のとおりです。 regexp.MustCompile(pattern) を使用して正規表現パターンをコンパイルします。パターンは、プロトコル、ホスト名、ポート (オプション)、パス (オプション)、およびクエリ パラメーター (オプション) と一致する必要があります。 regexp.MatchString(pattern,url) を使用して、URL がパターンと一致するかどうかを検出します。

See all articles