検索
ホームページphp教程php手册正規表現の使い方を詳しく解説

詳しいルール説明

UNIX システム愛好家に、安定したシステムとリモート起動機能に加えて何が最も気に入っているかを尋ねると、10 人中 9 人が正規表現を挙げ、最大の悩みはおそらく正規表現だと思います。複雑なプロセス制御と設置手順に対応します。では、正規表現とは一体何なのでしょうか?正規表現を真にマスターし、正しく柔軟に使用するにはどうすればよいでしょうか?この記事では、正規表現を理解してマスターしたいと考えている読者の役に立つことを願って、これを紹介します。

はじめに
簡単に言えば、正規表現はパターンのマッチングと置換に使用できる強力なツールです。正規表現は、vi エディター、Perl または PHP スクリプト言語、awk または sed シェル プログラムなど、UNIX システムに基づくほとんどすべてのツールで見つけることができます。さらに、JavaScript などのクライアント側スクリプト言語も正規表現のサポートを提供します。正規表現は、特定の言語やシステムの制限を超えて、広く受け入れられた概念と機能になっていることがわかります。
正規表現を使用すると、ユーザーは一連の特殊文字を使用して一致パターンを構築し、比較オブジェクトに含まれるかどうかに応じて、その一致パターンをデータ ファイル、プログラム入力、WEB ページ上のフォーム入力などの対象オブジェクトと比較できます。パターンが一致したら、対応するプロシージャを実行します。
例えば、正規表現の最も一般的な応用例の 1 つは、ユーザーがオンラインで入力した電子メール アドレスの形式が正しいかどうかを確認することです。ユーザーの電子メール アドレスの形式が正しいことを確認するために正規表現が使用されている場合、ユーザーが入力したフォーム情報は通常どおり処理されます。それ以外の場合、ユーザーが入力した電子メール アドレスが正規表現パターンと一致しない場合は、正しい電子メール アドレスを入力するように求めるプロンプト メッセージがポップアップ表示されます。 WEBアプリケーションの論理判断において正規表現が重要な役割を果たしていることが分かります。

基本文法
正規表現の機能と効果を予備的に理解した後、正規表現の構文形式を詳しく見てみましょう。
正規表現の形式は一般的に次のとおりです。
/love/
区切り文字「/」で囲まれた部分が、対象オブジェクト内で照合するパターンとなります。ユーザーは、一致するオブジェクトを検索するパターンのコンテンツを「/」区切り文字の間に入れるだけで済みます。ユーザーがパターンの内容をより柔軟にカスタマイズできるようにするために、正規表現は特別な「メタキャラクター」を提供します。いわゆるメタキャラクタは、正規表現において特別な意味を持つ特殊文字を指します。これを使用して、ターゲット オブジェクト内で先頭の文字 (つまり、メタキャラクタの前にある文字) の出現パターンを指定できます。
より一般的に使用されるメタキャラクターには、「+」、「*」、「?」があります。このうち、「+」メタキャラクタは、その先頭文字が対象オブジェクト内で 1 回以上出現する必要があることを規定し、「*」メタキャラクタは、その先頭文字が対象オブジェクト内で 0 回または連続して複数回出現する必要があることを規定します。 「?」文字は、その前のオブジェクトがターゲット オブジェクト内に 0 回または 1 回出現する必要があることを指定します。
次に、正規表現メタキャラクターの具体的な用途を見てみましょう。
/fo+/
上記の正規表現には「+」メタキャラクタが含まれているため、対象オブジェクト内で「fool」、「fo」、「football」の文字 f の後に 1 つ以上の文字 o が連続して出現する可能性があることを意味します。文字列が一致します。
/eg*/
上記の正規表現にはメタキャラクター「*」が含まれているため、対象オブジェクト内で文字 e の後に「easy」、「ego」、または「egg」が 0 個以上連続して出現する可能性があることを意味します。文字列内の文字 g と一致します。
/Wil?/
上記の正規表現には「?」メタキャラクタが含まれているため、対象オブジェクトの「Win」や「Wilson」などと同じになる可能性があることを意味します。0個または1個のl文字が連続して出現します。文字 i String が一致した後。
メタキャラクターに加えて、ユーザーは一致するオブジェクトにパターンが出現する頻度を正確に指定することもできます。たとえば、
/jim{2,6}/
上記の正規表現は、文字 m が一致するオブジェクト内に 2 ~ 6 回連続して出現できることを規定しているため、上記の正規表現は jimmy や jimmmmmy などの文字列と一致します。 。
正規表現の使用方法を予備的に理解した後、他のいくつかの重要なメタキャラクターの使用方法を見てみましょう。
s: タブキーと改行文字を含む単一のスペース文字の一致に使用されます。
d: 0 から 9 までの数字の一致に使用されます。文字、数字、またはアンダースコア文字と一致するため、
W: w と一致しないすべての文字と一致するために使用されます。
.: 改行文字を除くすべての文字と一致するために使用されます。
(注:sとS、wとWは互いの逆演算と考えることができます)
次に、正規表現で上記のメタキャラクターを使用する方法を例を通して見ていきます。
/s+/
上記の正規表現は、ターゲットオブジェクト内の 1 つ以上のスペース文字と一致するために使用できます。
/d000/
複雑な財務諸表を持っている場合、上記の正規表現を使用して、合計 1,000 元のすべての金額を簡単に見つけることができます。
上で紹介したメタキャラクターに加えて、正規表現にはロケーターという別の固有の特殊文字もあります。ロケーターは、ターゲット オブジェクト内で一致するパターンが現れる場所を指定するために使用されます。
より一般的に使用されるロケーターには、「^」、「$」、「b」、「B」が含まれます。このうち、「^」ロケーターは、一致するパターンがターゲット文字列の先頭に出現する必要があることを指定し、「$」ロケーターは、一致パターンがターゲット オブジェクトの末尾に出現する必要があることを指定し、b ロケーターは、一致するパターンがターゲット オブジェクトの末尾に出現する必要があることを指定します。一致するパターンは、ターゲット文字列の先頭または末尾の 2 つの境界のいずれかに出現する必要がありますが、「B」ロケーターは、一致するオブジェクトがターゲット文字列の先頭と末尾の 2 つの境界内に存在する必要があると規定しています。つまり、一致するオブジェクトをターゲット文字列の先頭またはターゲット文字として使用することはできません。同様に、「^」と「$」、「b」と「B」も、互いに逆演算である 2 セットのロケーターとみなすことができます。例:
/^hell/
上記の正規表現には「^」ロケーターが含まれているため、対象オブジェクト内の「hell」、「hello」、「hellhound」で始まる文字列と一致します。
/ar$/
上記の正規表現には「$」ロケーターが含まれているため、対象オブジェクト内の「car」、「bar」、「ar」で終わる文字列と一致します。
/bbom/
上記の正規表現パターンは「b」ロケーターで始まるため、対象オブジェクトの「bomb」または「bom」で始まる文字列と一致します。
/manb/
上記の正規表現パターンは「b」ロケーターで終わるため、対象オブジェクト内の「human」、「women」、または「man」で終わる文字列と一致します。
ユーザーがマッチングパターンをより柔軟に設定できるようにするために、正規表現を使用すると、ユーザーは特定の文字に限定されず、マッチングパターンの一定の範囲を指定できます。例:
/[A-Z]/
上記の正規表現は、A から Z までの範囲内の任意の大文字と一致します。
/[a-z]/
上記の正規表現は、a から z までの範囲内の任意の小文字に一致します。
/[0-9]/
上記の正規表現は、0から9までの範囲の任意の数値と一致します。
/([a-z][A-Z][0-9])+/
上記の正規表現は、「aB0」などの文字と数字で構成される任意の文字列に一致します。ここでユーザーが注意する必要があるのは、正規表現で「()」を使用して文字列を結合できることです。 「()」記号に含まれる内容は、ターゲット オブジェクトにも出現する必要があります。したがって、「abc」の最後の文字は数字ではなく文字であるため、上記の正規表現は「abc」などの文字列には一致しません。
プログラミングロジックの「OR」演算に似た正規表現を実装し、複数の異なるパターンからいずれかを選択してマッチングしたい場合は、パイプ文字「|」を使用できます。例:
/to|too|2/
上記の正規表現は、対象オブジェクトの「to」、「too」、または「2」に一致します。
正規表現でより一般的に使用される演算子には、否定演算子「[^]」もあります。先ほど紹介したロケーター「^」とは異なり、否定文字「[^]」は、パターンで指定された文字列が対象オブジェクト内に存在できないことを指定します。例:
/[^A-C]/
上記の文字列は、A、B、C を除くターゲット オブジェクト内の任意の文字と一致します。一般に、「[]」内に「^」がある場合は否定演算子とみなされ、「[]」の外側に「^」がある場合、または「[]」がない場合は否定演算子とみなされます。オペレーター。
最後に、ユーザーが正規表現パターンにメタキャラクターを追加して、一致するオブジェクトを見つける必要がある場合は、エスケープ文字「」を使用できます。例:
/Th*/
上記の正規表現は、ターゲットオブジェクトの「The」ではなく「Th*」と一致します。

使用例

正規表現をより包括的に理解した後、Perl、PHP、および JavaScript での正規表現の使用方法を見てみましょう。

通常、Perl における正規表現の使用形式は次のとおりです:

演算子 / 正規表現 / 置換する文字列 / 修飾子

演算子の項目には、それぞれ一致操作と置換操作を表す m または s を指定できます。 。

このうち、正規表現項目とは、照合または置換の対象となるパターンで、任意の文字、メタキャラクター、ロケーターなどで構成できます。置換文字列項目は、s 演算子を使用するときに、見つかったパターン マッチング オブジェクトを置換する文字列です。最後のパラメータは、さまざまな一致または置換方法を制御するために使用されます。例:

s/geed/good/

は、ターゲットオブジェクト内で最初に出現する geed 文字列を見つけて、good に置き換えます。ターゲット オブジェクトのグローバル スコープで複数の検索置換操作を実行したい場合は、パラメーター "g"、つまり s/love/lust/g を使用できます。

さらに、一致する大文字と小文字を制限する必要がない場合は、パラメータ「i」を使用できます。たとえば、

m/JewEL/i

上記の正規表現は、対象オブジェクトの Jewel、Jewel、または JEWEL に一致します。

Perlでは特殊な演算子「=~」を使って正規表現の一致するオブジェクトを指定します。例:

$flag =~ s/abc/ABC/

上記の正規表現は、変数 $flag 内の文字列 abc を ABC に置き換えます。

次に、Perl プログラムに正規表現を追加して、ユーザーのメール アドレス形式の有効性を検証します。コードは次のとおりです:

#!/usr/bin/perl
# get input
print "What's your email address?n"
chomp($email);表示結果
if($email =~ /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-] )+/ )
{
print(“あなたのメールアドレスは正しいです!n”);
}
else
{
print(“もう一度試してください!n”)
}

ユーザーがPHPを好む場合は、次のようにすることができます。 ereg() 関数を使用すると、パターン マッチング操作が実行されます。 ereg()関数の使用形式は以下の通りです:
ereg(pattern, string)

このうち、patternは正規表現のパターンを表し、stringは検索・置換操作を行う対象のオブジェクトです。メールアドレスの認証も同様です。PHPで記述したプログラムコードは以下の通りです。

if (ereg(”^([a-zA-Z0-9_-])+@([a- zA-Z0-9_ -])+(.[a-zA-Z0-9_-])+”,$email))
{ echo "あなたのメールアドレスは正しいです!";}
else
{ echo "お試しくださいまた!”;}
?> 最後に、JavaScript について見てみましょう。 JavaScript 1.2 には、正規表現の一致操作を実行するために使用できる強力な RegExp() オブジェクトが付属しています。 test() メソッドは、ターゲット オブジェクトに一致するパターンが含まれているかどうかを確認し、それに応じて true または false を返すことができます。

JavaScriptを使用して次のスクリプトを記述し、ユーザーが入力したメールアドレスの有効性を検証できます。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python如何使用email、smtplib、poplib、imaplib模块收发邮件Python如何使用email、smtplib、poplib、imaplib模块收发邮件May 16, 2023 pm 11:44 PM

一封电子邮件的旅程是:MUA:MailUserAgent——邮件用户代理。(即类似Outlook的电子邮件软件)MTA:MailTransferAgent——邮件传输代理,就是那些Email服务提供商,比如网易、新浪等等。MDA:MailDeliveryAgent——邮件投递代理。Email服务提供商的某个服务器发件人->MUA->MTA->MTA->若

es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

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

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

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

DVWA

DVWA

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

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

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

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