検索

正規表現の詳しい解説

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
      • 。例: (? 現在位置の左側 数値 <strong></strong><code>(?&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 までご連絡ください。
誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

同時性については、PHP 8.1の繊維を説明します。同時性については、PHP 8.1の繊維を説明します。Apr 12, 2025 am 12:05 AM

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティ:リソース、サポート、開発PHPコミュニティ:リソース、サポート、開発Apr 12, 2025 am 12:04 AM

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

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

ホットツール

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

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

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

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません