ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現 PHP_PHP チュートリアルの正規関数

PHP 正規表現 PHP_PHP チュートリアルの正規関数

WBOY
WBOYオリジナル
2016-07-20 10:56:51856ブラウズ

私の PHP の正規表現入門 は、インターネット上の記事から始まりました。この記事は、PHP の正規表現の使い方を簡単なものから奥深いものまで説明していますが、それでも習得するのは難しいです。使っていくうちに忘れてしまうので、難しい知識はこの記事を4~5回読んで理解するのに時間がかかることもあります。できる限り長く続けて読んでいただければ、規則的なルールを適用する能力が大幅に向上することがわかるでしょう。

PHP 正規表現の定義:

文字の配置とパターンの一致を記述するために使用される文法規則。これは主に、文字列のパターン分割、マッチング、検索、置換操作に使用されます。

PHP の正規関数:

PHP には 2 セットの正規関数があります。これらの 2 つの正規関数には、次のような類似した機能があります。

1 つのセットは、PCRE (Perl 互換正規表現) ライブラリによって提供されます。接頭辞「preg_」が付いた名前の関数。

POSIX (Portable Operating System Interface of Unix) 拡張機能によって提供される関数のセット。接頭辞「ereg_」が付いた名前の関数を使用してください (POSIX 正規関数ライブラリは PHP 5.3 以降使用が推奨されなくなり、PHP 6 から削除されます)

POSIX 正規関数は歴史的な段階で開始されようとしているため、 PCRE これは perl の形式に似ており、perl と php を切り替えるのに便利であるため、ここでは PCRE の規則性の使用に焦点を当てます。

PCRE Regular Expression

PCRE は Perl Compare Regular Expression の略で、Perl 互換の正規表現を意味します。

PCRE では、パターン式 (つまり、正規表現) は通常、「/apple/」のように 2 つのバックスラッシュ「/」で囲まれます。

正規表現の重要な概念は、メタキャラクター、エスケープ、パターン単位 (繰り返し)、反意語、参照、およびアサーションです。これらの概念は、記事 [1] で簡単に理解して習得できます。

一般的に使用されるメタ文字:

メタ文字の説明

A は文字列の先頭のアトムに一致します

Z は文字列の末尾のアトムに一致します

b は単語の境界に一致します / bis/ 一致 先頭が である文字列 /isb/ は、末尾が区切られている文字列 /bisb/ と一致します

B は単語の境界を除く任意の文字と一致します /Bis/ は単語 "This" の "is" と一致します

d は A と一致します数値; [0-9]

D は数字以外の文字に一致します; [^0-9]

w は [0-9a -zA-Z_]

に相当します。

W は英語の文字、数字、アンダースコアを除く任意の文字に一致します。[^0-9a-zA-Z_] に相当します。

s は空白文字に相当します。 [^ftv]

f は x0c に相当するフォーム フィードに一致、cL

は x0a に相当する、または cJ

はキャリッジ リターンに相当する、または cM

t は x09 に相当する。または cl

v は垂直タブ文字に一致します。x0b または ck に相当します

oNN は 8 進数の数字に一致します

xNN は 16 進数の数字に一致します

cC は制御文字に一致します

パターン修飾子:

パターン修飾子は特に大文字と小文字を無視して複数の行を一致させるときに使用されます。この修飾子をマスターすると、遭遇する多くの問題が解決されることがよくあります。

i - 大文字と小文字の両方に一致します

M - 文字列を複数行として扱います

S - 文字列を単一行として扱い、改行を通常の文字として扱い、「.」は任意の文字と一致します

X - パターン内の空白は無視されます

U - 最も近い文字列と一致します

e - 置換された文字列を式として使用します

形式: /apple/i は、大文字と小文字を無視して、「apple」または「Apple」などと一致します。 /i

PCRE パターン単位:

//1 最初の属性を抽出します

/^d{2} ([W])d{2}1d{4}$ は「12-31 -2006」と一致します、「09/27/1996」、「86 01 4321」などの文字列。しかし、上記の正規表現は「12/34-5678」の形式と一致しません。これは、パターン「[W]」の結果「/」がすでに格納されているためです。次の位置「1」が を参照する場合、一致するパターンも文字「/」です。

マッチング結果を保存する必要がない場合は非保存パターン単位「(?:)」を使用してください

例えば/(?:a b c)(D E F)1g/は「aEEg」とマッチングします。一部の正規表現では、非ストレージ モード単位を使用する必要があります。それ以外の場合は、後続の参照の順序を変更する必要があります。上記の例は、/(abbc)(CEF)2g/ と書くこともできます。

PCRE正規表現関数:

preg_match() と preg_match_all()
preg_quote()
preg_split()
preg_grep()
preg_replace()

関数固有の使用法: PHP マニュアルを使用して以下から見つけて共有してください日常生活で蓄積された表現:

match action属性

$str = '';

$match = '';

preg_match_all('/s+action="(?!http:)( . *?)"s/', $str, $match); print_r($match);正規表現でコールバック関数を使用する



/**

* コールバック関数で一部の文字列を置換します

* * / 関数 callback_replace() { $match = ''; com.cn 太字フォント 段落テキスト
$url = 'http://esfang.house.sina.com.cn';
$str = ''; (?!http:)(.*?)(?="s)/e', 'search($url, 1)', $str );

echo $str;
}

function search($ url , $match){
return $url . '/' . $match;






'; preg_match_all ( '/(?<=<(w{1})>).*(?=)/', $ str, $match );

echo "属性を持たない HTML タグの内容と一致します:"; print_r ( $match ) = preg_replace ( '/(?<=saction=" shref=")(?!http: javascript)(.*?)(?="s)/e', 'add_url($url, '1 ')', $form_html );

最後に、通常のツールは強力ですが、効率性と執筆時間の点で、緊急のタスクやあまり要求のないタスクの場合は、単純で大雑把な方法の方が良い場合があります。

pregシリーズとeregシリーズの実行効率については、pregの方が速いという記事を見たことがありますが、具体的にはeregの方があまり使われておらず、これから歴史の舞台に立つことになるので、追記しておきます。個人的なアップデートです。私は PCRE 方式を好むので、それに精通している友人は意見を言うことができます。ありがとうございます。





http://www.bkjia.com/PHPjc/445820.html

www.bkjia.comtru​​e

http://www.bkjia.com/PHPjc/445820.html

技術記事
私の PHP 正規表現入門は、インターネット上の記事から始まりました。この記事は、PHP 正規表現の使い方を浅いところから深いところまで説明していますが、入門書としては良いと思います。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。