亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

正規(guī)表現(xiàn)マニュアル

リーディング(28419) 更新時(shí)間(2022-04-13)

正規(guī)表現(xiàn)。正規(guī)表現(xiàn)とも呼ばれます。 (英語(yǔ): Regular Expression、コード內(nèi)では regex、regexp、または RE と略されることがよくあります)、コンピューター サイエンスの概念。通常のテーブルは、特定のパターン (ルール) に一致するテキストを取得および置換するために使用されます。


正規(guī)表現(xiàn)は、文字列操作のための論理式です。正規(guī)表現(xiàn)は、いくつかの事前定義された特定の文字とこれらの特定の文字の組み合わせを使用して、「ルール文字列」を形成します。この「ルール文字列」は、文字列のフィルタリング ロジックを表現(xiàn)するために使用されます。

多くのプログラミング言語(yǔ)は、正規(guī)表現(xiàn)を使用した文字列操作をサポートしています。たとえば、Perl には強(qiáng)力な正規(guī)表現(xiàn)エンジンが組み込まれています。正規(guī)表現(xiàn)の概念は、もともと Unix のツール ソフトウェア (sed や grep など) によって普及しました。正規(guī)表現(xiàn)は「regex」と略されることが多く、単數(shù)形には regexp、regex が含まれ、複數(shù)形には regexps、regexes、regexen が含まれます。

最初の正規(guī)表現(xiàn)の例!

インスタンス

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PHP中文網(wǎng)教程(php.sn)</title>
</head>
<body>

<script>
var str = "abc123def";
var patt1 = /[0-9]+/;
document.write(str.match(patt1));
</script>

</body>
</html>

インスタンスの実行 ?

[インスタンスの実行]ボタンをクリックして、オンライン インスタンスを表示します

ヒント: 正規(guī)表現(xiàn)チュートリアルは、初心者から上級(jí)者まで正規(guī)表現(xiàn)の知識(shí)を?qū)Wぶのに役立ちます。ご質(zhì)問がある場(chǎng)合は、PHP 中國(guó)語(yǔ) Web サイト 正規(guī)表現(xiàn)コミュニティ にアクセスして質(zhì)問してください。熱心なネチズンが答えてくれます。

正規(guī)表現(xiàn)機(jī)能

  • 非常に柔軟、論理的かつ機(jī)能的;

  • 複雑な制御を迅速に実現(xiàn)非常に簡(jiǎn)単な方法で文字列を取得します。

  • 初めての方にとっては、これは比較的わかりにくいかもしれません。

正規(guī)表現(xiàn)の主なアプリケーションオブジェクトはテキストであるため、有名なエディタEditPlusからMicrosoft Word、Visual Studioなどに至るまで、さまざまなテキストエディタで使用されています。テキストコンテンツを処理するための正規(guī)表現(xiàn)。

目的

正規(guī)表現(xiàn)と別の文字列を指定すると、次の目的を達(dá)成できます:

  • 指定された文字列が正規(guī)に準(zhǔn)拠しているかどうかフィルタリング ロジック式 (「マッチング」と呼ばれます)

  • では、正規(guī)表現(xiàn)を使用して、文字列から必要な特定の部分を取得できます。

通常のエンジン

通常のエンジンは主に 2 つのカテゴリに分類できます。

  • 1 つは DFA、

  • #1 つは NFA です。

どちらのエンジンも長(zhǎng)い歴史(20年以上)があり、バリエーションも豊富です!したがって、POSIX の導(dǎo)入により、不要なバリアントが継続的に生成されることが回避されます。このように、主流の通常エンジンは、1. DFA、2. 従來(lái)の NFA、3. POSIX NFA の 3 つのカテゴリに分類されます。

DFA エンジンはバックトラッキングを必要としないため、線形時(shí)間狀態(tài)で実行されます (したがって、同じ文字を 2 回テストすることはありません)。また、DFA エンジンは、可能な限り長(zhǎng)い文字列が一致することを保証します。ただし、DFA エンジンには限られた狀態(tài)しか含まれていないため、後方參照を使用してパターンを照合することはできず、明示的な展開を構(gòu)築しないため、部分式をキャプチャすることもできません。

従來(lái)の NFA エンジンは、指定された順序で正規(guī)表現(xiàn)のすべての可能な展開をテストし、最初の一致を受け入れる、いわゆる「貪欲な」一致バックトラッキング アルゴリズムを?qū)g行します。従來(lái)の NFA は正規(guī)表現(xiàn)の特定の拡張を構(gòu)築して一致を取得するため、部分式の一致と一致する後方參照の両方をキャプチャできます。ただし、従來(lái)の NFA はバックトラックするため、まったく同じ狀態(tài)に複數(shù)回アクセスできます (異なるパス経由で到達(dá)した場(chǎng)合)。したがって、最悪の場(chǎng)合、動(dòng)作が非常に遅くなる可能性があります。従來(lái)の NFA は最初に見つかった一致を受け入れるため、他の (おそらく長(zhǎng)い) 一致が検出されない可能性もあります。

POSIX NFA エンジンは従來(lái)の NFA エンジンと似ていますが、可能な限り最長(zhǎng)の一致が見つかるまでバックトラックを続ける點(diǎn)が異なります。したがって、POSIX NFA エンジンは従來(lái)の NFA エンジンよりも低速であり、POSIX NFA を使用する場(chǎng)合は、長(zhǎng)い一致検索ではなく短い一致検索をサポートするためにルックバック検索の順序を変更したくないでしょう。

DFA エンジンを主に使用するプログラム:

awk,egrep,flex,lex,MySQL,Procmail等;

従來(lái)の NFA エンジンを主に使用するプログラム:

GNU Emacs,Java,ergp,less,more,.NET語(yǔ)言,PCRE library,Perl,PHP,Python,Ruby,sed,vi;

主に POSIX NFA エンジンを使用するプログラム以下が含まれます:

mawk,Mortice Kern Systems’ utilities,GNU Emacs(使用時(shí)可以明確指定);

DFA/NFA ハイブリッドを使用するエンジンもあります:

GNU awk,GNU grep/egrep,Tcl。

NFA と DFA の作業(yè)の違いを簡(jiǎn)単に説明する例を挙げます:

たとえば、「this is yansen's blog」という文字列、正規(guī)表現(xiàn)があります。式は /ya(msen|nsen|nsem)/ です (式は気にしないでください。これはエンジン間の動(dòng)作の違いを説明するためだけです)。 NFA は次のように機(jī)能します。まず、文字列內(nèi)で y を検索し、その後に a が続くかどうかを照合します。a の場(chǎng)合は、引き続き m が続くかどうかを検索します。そうでない場(chǎng)合は、その後に n が続くかどうかを照合します ( msen 選択ブランチはこの時(shí)點(diǎn)で削除されます)。

次に、その後に s、e が続くかどうかを確認(rèn)し、n であるかどうかをテストします。n であれば、一致は成功です。そうでない場(chǎng)合は、m であるかどうかをテストします。なぜm? NFA は正規(guī)表現(xiàn)に基づいて動(dòng)作し、文字列を繰り返しテストするため、同じ文字列が何度もテストされる可能性があります。

これは DFA の場(chǎng)合には當(dāng)てはまりません。DFA は、この中で t から始まる順序で y を検索し、y を見つけます。その後に a が続くことがわかっている場(chǎng)合は、式に a があるかどうかを確認(rèn)し、たまたまここがあります。次に、文字列 a の後に n が続き、DFA は式を順番にテストします。この時(shí)點(diǎn)で、msen は要件を満たしていないため、削除されます。 nsen と nsem が要件を満たしているため、DFA は文字列を順番にチェックします。sen の n が検出されると、nsen ブランチのみが要件を満たし、一致は成功します。

2 つのエンジンはまったく異なる方法で動(dòng)作していることがわかります。1 つ (NFA) は式指向で、もう 1 つ (DFA) はテキスト指向です。一般的に、DFA エンジンは検索が高速です。ただし、NFA は式指向で操作が簡(jiǎn)単なため、ほとんどのプログラマーは NFA エンジンを好みます。どちらのエンジンにも獨(dú)自の長(zhǎng)所があり、実際の引用はニーズと使用する言語(yǔ)によって異なります。

この正規(guī)表現(xiàn)チュートリアル マニュアルの內(nèi)容

この正規(guī)表現(xiàn)チュートリアルでは、正規(guī)表現(xiàn)の構(gòu)文、正規(guī)表現(xiàn)のメタキャラクタ、正規(guī)表現(xiàn)、式演算子の優(yōu)先順位、正規(guī)表現(xiàn)など、正規(guī)表現(xiàn)の基本および高度な知識(shí)をすべてカバーします。式一致ルールなど。

ヒント: このチュートリアルの各章には、多くの正規(guī)表現(xiàn)の例が含まれています。[例の実行] ボタンを直接クリックすると、結(jié)果をオンラインで表示できます。これらの例は、正規(guī)表現(xiàn)をより深く理解するのに役立ちます。

その他の正規(guī)表現(xiàn)関連の學(xué)習(xí)參照リソース

このページの右側(cè)にある知識(shí)の拡張に加えて、次のリソースもすべての人向けに選択されています