検索
ホームページphp教程php手册正規表現の構文をわかりやすくする

文法|通常

正規表現 (RE) は、少数の人しか理解できない謎の言語であると誤解されることがよくあります。表面的には乱雑に見えますが、構文を知らなければ、コードはテキストのゴミの塊のように見えるでしょう。実際、正規表現は非常に単純で理解できるものです。この記事を読むと、正規表現の一般的な構文を理解できるようになります。

複数のプラットフォームをサポート

正規表現は、1956 年に数学者の Stephen Kleene によって初めて提案されました。彼は、自然言語に関する段階的な研究の結果に基づいてそれを提案しました。完全な構文を持つ正規表現は文字形式のマッチングに使用され、後に融合情報技術の分野に適用されました。それ以来、正規表現はいくつかの期間にわたって進化し、現在の標準は ISO (国際標準化機構) によって承認され、Open Group によって承認されました。

正規表現は特別な言語ではありませんが、ファイルまたは文字内のテキストを検索して置換するための標準です。基本正規表現 (BRE) と拡張正規表現 (ERE) という 2 つの標準があります。 ERE には、BRE 機能とその他の概念が含まれています。

正規表現は、xsh、egrep、sed、vi、UNIX プラットフォーム上のプログラムなど、多くのプログラムで使用されます。これらは HTML や XML などの多くの言語で採用されており、通常、これらの採用は標準全体のサブセットにすぎません。

それはあなたが思っているよりも一般的です
クロスプラットフォームのプログラミング言語に移植された正規表現の開発により、その機能はますます完成し、その使用はますます広まっています。インターネット上の検索エンジンや電子メール プログラムでも使用されており、UNIX プログラマーでなくても、ルール言語を使用してプログラムを簡素化し、開発時間を短縮できます。

正規表現 101
多くの正規表現の構文は非常に似ていますが、それは、これまで学習したことがないからです。ワイルドカードは RE の構造タイプであり、反復操作です。まず、ERE 標準の最も一般的な基本構文タイプを見てみましょう。具体的な使用例を提供できるようにするために、いくつかの異なるプログラムを使用します。

文字マッチング



正規表現の鍵は、一致を検索する対象を決定することです。この概念がなければ、Res は役に立ちません。

表 A に示すように、各式には、見つける必要がある命令が含まれています。

表 A: 文字に一致する正規表現

操作
説明

結果

.
任意の 1 文字に一致
grep .ord sample.txt
「ford」、「lord」、「2ord」などに一致します. ファイルsample.txt.

[ ]
括弧内にリストされている任意の 1 文字と一致します
grep [cng]ord sample.txt
「cord」、「nord」、および「gord」のみと一致します

[^ ]
括弧内にリストされていない任意の 1 文字と一致します
grep [^cn]ord sample.txt
「lord」、「2ord」などには一致しますが、「cord」や「nord」には一致しません



grep [a -zA-Z]ord sample.txt
「aord」、「bord」、「Aord」、「Bord」などに一致します



grep [^0-9]ord sample.txt
「Aord」に一致します”、”aord” などですが、”2ord” などはありません。



繰り返し演算子
繰り返し演算子、または量指定子は、特定の文字を検索する回数を表します。これらは、複数行にまたがる文字を検索するために文字マッチング構文でよく使用されます (表 B を参照)。

表 B: 正規表現の反復演算子

操作
説明

結果

?
任意の文字が存在する場合、1 回一致します
egrep “?erd” sample.txt
「berd」、「herd」と一致します、などと「erd」

*
宣言された要素が存在する場合、複数回一致します
egrep “n.*rd” sample.txt
「nerd」、「nrd」、「neard」などと一致します

+
宣言された要素に 1 回以上一致します
egrep “[n]+erd” sample.txt
“nerd”、“nnerd” などには一致しますが、“erd” には一致しません

{n}
宣言された要素に正確に一致しますn 回
egrep 「[a-z]{2}erd」sample.txt
「cherd」、「blerd」などには一致しますが、「nerd」、「erd」、「buzzerd」などには一致しません

{n, }
宣言された要素と少なくとも n 回一致します
egrep “.{2,}erd” sample.txt
“cherd” と “buzzerd” には一致しますが、“nerd” には一致しません

{n,N}
宣言された要素と一致します最低 n 回、ただし N 回を超えない
egrep “n[e]{1,2}rd” sample.txt
“nerd” と “neerd” に一致します


anchor
anchor は、必要な形式を指します図 C に示すように、 match 。一般的な文字の組み合わせを見つけるのに使用してください。たとえば、vi 行エディターのコマンド s を使用して、置換を表します。このコマンドの基本構文は次のとおりです。

^
行頭と一致します
s/^/blah /
行頭に「blah」を挿入します

$
行末に一致
s/$/ blah/
行末に「blah」を挿入します

単語の先頭に一致します
s//
「blah」を挿入します単語の先頭に一致



egrep “ “blahfield” などに一致

>
単語の末尾に一致
s/>/blah/
を挿入単語の最後にある blah"



egrep ">blah" sample.txt
"soupblah" などに一致します

b
単語の先頭または末尾に一致します
egrep "bblah" sample.txt
「blahcake」および「countblah」と一致します

B
単語の途中で一致します
egrep「Bblah」sample.txt
「sublahper」などと一致します




Interval

Res で利用可能な別のものはスペーサー (またはキャレット) 記号です。実際、この記号は OR ステートメントと同等であり、 | 記号を表します。次のステートメントは、sample.txt ファイル内の「nerd」と「merd」のハンドルを返します:

egrep "(n|m)erd" sample.txt


interval 関数は、特に次の情報を探している場合に非常に強力です。時間のスペルが異なるファイルでも同じ結果が得られますが、次の例でも同じ結果が得られます:

egrep "[nm]erd" sample.txt

この関数の真の有用性は、interval 関数をRes Reflected の高度な機能。

いくつかの予約文字
Res の最後で最も重要な機能は予約文字 (特定文字とも呼ばれます) です。たとえば、文字「ne*rd」と「ni*rd」を検索したい場合、パターン マッチング ステートメント「n[ei]*rd」は「neeeeerd」と「nieieerd」に一致しますが、探しているものではありません。キャラクターのため。 「*」 (アスタリスク) は予約文字であるため、バックスラッシュ記号、つまり「n[ei]*rd」に置き換える必要があります。その他の予約文字には、

^ (カラット)
(ピリオド)
[ (左括弧}
$ (ドル記号)
( (左括弧)
) (右括弧)
| (パイプ)
* (アスタリスク) があります。
+ (プラス記号)
? (疑問符)
{ (左中括弧、または左中括弧)
バックスラッシュ
上記の文字を文字検索に含めると、Res が非常に難しくなるのは間違いありません。 , 次の PHP の eregi 検索エンジン コードは読みにくいです

eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a. -z0-9- ]+(.[a-z0-9-]+)*$",$sendto)

ご覧のとおり、プログラムの意図を把握するのは困難です。しかし、予約文字を脇に置いておけば、多くの場合、理解することができます。コードの意味を誤解しています。

概要
この記事では、正規表現を分かりやすく説明し、ERE 標準の一般的な構文をリストしました。Open Group のルールの詳細な説明を参照するには、次を参照してください。 Expressions については、ディスカッション エリア

に質問や意見を投稿してください。



声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

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

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン