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

正規表現の使い方を詳しく解説

Jun 21, 2016 am 09:10 AM
email gt javascript lt quot

詳しいルール説明

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


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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

See all articles