1. 正規表現とは
正規表現 (正規表現) は、次の目的で使用できる文字列の一致パターンを記述します。特定のルールに一致する文字列を取得できます。
(2) 一致ルールに基づいて文字列に対して柔軟な置換操作を実行します。
正規表現は実際に学ぶのが非常に簡単で、さらにいくつかの抽象的な概念も理解しやすいです。正規表現が複雑だと多くの人が感じる理由は、一方で、ほとんどのドキュメントが正規表現を浅いところから深いところまで説明しておらず、概念の順序に注意を払っていないため、理解することが困難であるためです。 ; 一方、さまざまなエンジン 付属のドキュメントでは通常、その独自の機能が紹介されていますが、これらの独自の機能を最初に理解する必要はありません。
関連コース:
ブール教育正規表現ビデオチュートリアル
2. 正規表現の使用方法
2.1 通常の文字 、数字、漢字、アンダースコア以下の章で特に定義されていない句読点はすべて通常の文字です。式内の通常の文字は、文字列と一致する場合、同じ文字と一致します。
例 1: 式 c、文字列 abcdef と一致する場合、一致結果は成功、一致した内容は c、一致した位置は 2 から始まり 3 で終わります。 (注: 添え字が 0 から始まるか 1 から始まるかは、現在のプログラミング言語によって異なる場合があります)。
例 2: 式 bcd、文字列 abcde と一致する場合、一致結果は成功、一致した内容は bcd、一致した位置は 1 から始まり 4 で終わります。
2.2 単純なエスケープ文字 書くのに不便な文字が前に追加されています。実際、私たちはこれらのキャラクターをよく知っています。
後の章で特別な用途を持つ他の句読点があります。句読点の前に追加すると、記号そのものを表します。例: ^ と $ には特別な意味があります。文字列内の ^ および $ 文字を抽出する場合は、正規表現を ^ および $ として記述する必要があります。
これらのエスケープ文字のマッチング方法は、通常の文字のマッチング方法と同様です。同じ文字にも一致します。
例: 式 $d、文字列 abc$de と一致する場合、一致結果は次のとおりです: 一致した内容は次のとおりです: $d; 一致した位置は 3 から始まり 5 で終わります。 「複数の文字」と一致する可能性があります
正規表現の一部の表現方法は、複数の文字のいずれか 1 つと一致します。たとえば、式 d は任意の数値と一致します。どの文字とも一致しますが、一致できるのは 1 つだけであり、複数にすることはできません。これはポーカーをプレイするときと同じで、キングは任意のカードを置き換えることができますが、ジャックポットは 1 枚のカードを置き換えることができます。
例 1: 式 dd、abc123 と一致する場合、一致結果は次のとおりです: 一致した内容は 12、一致した位置は 3 から始まり 5 で終わります。 例 2: 式 a.d 、 aaa100 と一致する場合、一致結果は成功、一致した内容は aa1、一致した位置は 1 から始まり 4 で終わります。2.4 「複数の文字」に一致する式をカスタマイズする
角括弧 [] を使用して、任意の 1 文字に一致する一連の文字を含めます。 [^] を使用すると、一連の文字を含めることができ、その中の文字を除く任意の文字と一致します。同様に、それらのいずれかを一致させることはできますが、一致できるのは 1 つだけであり、複数ではありません。
例 1: 式 [bcd][bcd] が abc123 と一致する場合、一致結果は成功、一致した内容は bc、一致した位置は 1 から始まり 3 で終わります。 例 2: 式 [^abc] が abc123 に一致する場合、一致結果は成功、一致した内容は 1、一致した位置は 3 から始まり 4 で終わります。2.5 一致の数を変更する特殊なシンボル
前の章で説明した式は、1 種類の文字にのみ一致する式であっても、複数の文字に一致する式であっても、一致できるのは 1 回だけです。式と一致の数を変更する特殊記号を使用すると、式を再度記述しなくても、繰り返し一致させることができます。
使用方法は、修正式の後に「修正回数」を入れます。例: [bcd][bcd] は [bcd]{2} と記述できます。
例 1: 式 d+/.?d* が $12.5 に一致する場合、一致結果は成功、一致した内容は 12.5、一致した位置は 10 から始まり 14 で終わります。
例 2: 式 go{2, 8}gle が goooooogle の広告と一致する場合、一致結果は成功、一致したコンテンツは goooooogle、一致した位置は 7 から始まり 17 で終わります。
2.6 抽象的な意味を表すその他の記号
一部の記号は、式における抽象的な特別な意味を表します:
これ以上のテキスト説明はまだ比較的抽象的であるため、誰もが理解できるように例を示します。
例 1: 式 ^aaa が xxx aaa xxx と一致する場合、一致結果は失敗となります。 ^ は文字列の先頭と一致する必要があるため、^aaa は aaa xxx xxx のように aaa が文字列の先頭にある場合にのみ一致します。
例 2: 式 aaa$ が xxx aaa xxx と一致する場合、一致結果は失敗になります。 $ は文字列の末尾と一致する必要があるため、aaa$ は、xxx xxx aaa のように aaa が文字列の末尾にある場合にのみ一致します。
例 3: 式 .b. @@@abc と一致する場合、一致する結果は次のとおりです: @a 一致する位置は 2 から始まり 4 で終わります。
詳しい説明: b は ^ や $ に似ており、それ自体ではどの文字とも一致しませんが、一致結果の位置の両側にある必要があり、その一方の側は w の範囲で、もう一方の側は w の範囲です。は非 w 範囲です。
例 4: 式 bendb がweekend、endfor、endに一致する場合、一致する結果は成功、一致する内容はend、一致する位置は15から始まり18で終わります。
一部の記号は、式内の部分式間の関係に影響を与える可能性があります。
例 5: 式 Tom|Jack が文字列 I'm Tom, he is Jack と一致する場合、一致結果は次のようになります。は: Tom、一致した位置は 4 で始まり 7 で終わります。次の一致の結果は次のとおりです。一致した内容は 15 で始まり、19 で終わります。
例 6: 式 (gos*)+ が Let's go go go! に一致する場合、一致する結果は success、一致する内容は go go go、一致する位置は 6 から始まり 14 で終わります。
例 7: 式 \(d+.?d) が $10.9,¥20.5 と一致する場合、一致結果は成功、一致した内容は¥20.5、一致した位置は 6 から始まり 10 で終わります。括弧範囲のみを取得して一致する内容は、20.5 です。
3. 正規表現での高度な使用法
3.1 一致数の貪欲と非貪欲
貪欲モード:
変更されたマッチングを使用する場合度の特殊記号を使用すると、同じ式を同時に異なる時刻に一致させることができるいくつかの表現方法があります。たとえば、「{m, n}」、「{m,}」、?、*、+ などです。 、特定の一致時間は、一致する文字列によって異なります。このように無限に繰り返されるマッチング式は、マッチング プロセス中に常に可能な限り多くの回数マッチングされます。たとえば、テキスト dxxxdxxxd の例は次のとおりです。
一致する場合、w+ は常にそのルールに準拠する可能な限り多くの文字と一致することがわかります。 2 番目の例では最後の d と一致しませんが、式全体が正常に一致するようにするためでもあります。同様に、* と "{m, n}" を含む式は可能な限り一致し、? を含む式も一致するかどうかに応じて可能な限り一致します。このマッチング原理は貪欲モードと呼ばれます。
非貪欲モード:
一致の数を変更する特殊記号の後に ? 記号を追加して、不特定の数の一致を含む式の一致をできるだけ少なくし、一致するか一致しない式をできるだけ「不一致」にできるようにします。可能。このマッチング原理は非貪欲モードと呼ばれ、非貪欲モードとも呼ばれます。一致する数が少ない場合、正規表現全体の一致は失敗します。貪欲モードと同様に、非貪欲モードでも、正規表現全体が正常に一致するように最小限の一致が行われます。たとえば、テキスト「dxxxdxxxd」の場合:
その他の例は次のとおりです。
例 1: 式
bb
aa
bb
例 2: 対照的に、式
aa
> ; を再度一致させると、2 番目のbb
3.2 後方参照 1,2...
式が一致すると、式エンジンは括弧 () に含まれる式と一致した文字列を記録します。一致結果を取得する場合、括弧内に含まれる式と一致した文字列を個別に起動できます。これは、前の例で何度も実証されています。実際のアプリケーションでは、ある境界を使って検索し、取得したい内容にその境界が含まれない場合には、括弧を使って範囲を指定する必要があります。たとえば、前の
実は、「括弧内に含まれる式と一致した文字列」は、マッチング完了後に利用できるだけでなく、マッチング処理中にも利用することができます。式の後の部分は、前の「文字列とすでに一致した括弧内の部分一致」を参照できます。参照方法は数値を加算することです。 1 は最初の括弧のペアで一致した文字列を参照し、2 は 2 番目の括弧のペアで一致した文字列を参照します。以下同様に、括弧のペアに別の括弧のペアが含まれる場合は、外側の括弧が最初に並べ替えられます。つまり、左括弧のどのペア ( ( が最初に来ると、このペアが最初にソートされます。
例 1: 式 ('|")(.*?)(/1) は、'Hello'、"World に一致します。 "、一致結果は成功です。一致した内容は 'Hello' です。次のものを一致させる場合、"World" と一致する可能性があります
例 2: 式 (w)1{4,}。aa bbbb abcdefg と一致する場合ccccc 111121111 999999999、一致した結果は成功、一致した内容は cccccc になります。この式では、w 範囲の文字を少なくとも 5 回繰り返す必要があることに注意してください。 {5,} の違い
例 3: 式 .*?
3.3 事前検索、一致なし、逆事前検索、一致なし
前の章で、次について説明しました。いくつかの抽象的な意味。特殊記号: ^、$、b。それらはすべて、文字自体には一致せず、「文字列の末尾」または「文字列間のギャップ」に条件を付加するだけであるという共通点があります。この概念の後、このセクションでは、「両端」または「ギャップ」に条件を付ける別のより柔軟な方法を引き続き紹介します
前方事前検索: (?=xxxxx) 、 (?!xxxxx)
形式: (?=xxxxx)、一致した文字列内で、それが含まれる「ギャップ」または「両端」の追加条件は、ギャップの右側が xxxxx 部分の式と一致できる必要があります。これはこのギャップの追加条件としてのみ使用されるため、このギャップの後の文字と実際に一致する後続の式には影響しません。これは、それ自体ではどの文字とも一致しない b に似ています。 b はギャップの前後の文字を取得して判断するだけで、その後の実際のマッチングには影響しません。
例 1: Windows(?=NT|XP) という式が Windows 98、Windows NT、および Windows 2000 と一致する場合、Windows NT の Windows のみと一致し、他の Windows の単語は一致しません。
例 2: 式 (w)((?=111)(1))+ が文字列 aaa ffffff 9999999999 に一致する場合、6 f の最初の 4 と 9 9 の最初の 7 に一致します。この式は、文字と数字が 4 回以上繰り返された場合、最後の 2 桁より前の部分が一致すると解釈できます。もちろん、この式はこのように記述する必要はありませんが、デモンストレーションの目的でのみ使用されます。
形式: (?!xxxxx) は、ギャップの右側にあり、式の xxxxx 部分と一致してはなりません。
例 3: 式 ((?!bstopb).)+ が fdjka ljfdl stop fjdsla fdj と一致する場合、先頭から stop より前の位置まで一致します。文字列に stop がない場合は、全体と一致します。弦。
例 4: 式 do(?!w) が文字列 Done, do, Dog と一致する場合、一致できるのは do のみです。この例では、do の後に (?!w) を使用すると、b を使用した場合と同じ効果があります。
逆方向事前検索: (?
これら 2 つの形式の概念は、順方向事前検索と似ています。 逆方向事前検索に必要な条件は次のとおりです。ギャップの「左側」では、2 つの形式はそれぞれ、右側を判断するのではなく、指定された式と一致する必要があることと、一致できないことを要求します。ギャップへの追加であり、文字自体には一致しないという点で、「前方事前検索」と同じです。
4. その他の一般的なルール
4.1 ルール 1
式では、xXX および uXXXX を使用して文字を表すことができます (X は 16 進数を表します)。
4.2 ルール2
式s、d、w、bは特別な意味を表しますが、対応する大文字は反対の意味を表します
4.3 ルール3
には特別な意味があります式内にあり、文字自体の文字概要と一致するように追加する必要があります
4.4 ルール 4
一致結果を実行したくない場合は、括弧 () 内の部分式。後で使用する場合は (?:xxxxx) 形式を使用できます。
例 1: 式 (?:(w)1)+ が「a bbccdd efg」と一致する場合、結果は「bbccdd」になります。括弧 (?:) 範囲内の一致はログに記録されないため、(w) は 1 で囲まれます。
4.5 ルール 5
よく使用される式の属性設定の紹介: Ignorecase、Singleline、Multiline、Global
関連記事:

セッション固定攻撃を防ぐための効果的な方法には、次のものがあります。1。ユーザーがログインした後にセッションIDを再生します。 2。安全なセッションID生成アルゴリズムを使用します。 3。セッションタイムアウトメカニズムを実装します。 4。HTTPSを使用したセッションデータを暗号化します。これらの措置は、セッションの固定攻撃に直面するときにアプリケーションが破壊されないようにすることができます。

セッションのない認証の実装は、サーバー側のセッションストレージなしですべての必要な情報がトークンに保存されるトークンベースの認証システムであるJSonWebtokens(JWT)を使用することで実現できます。 1)JWTを使用してトークンを生成および検証する、2)トークンが傍受されるのを防ぐためにHTTPSが使用されることを確認する、3)クライアント側にトークンを安全に保存する、4)改ざんを防ぐためにサーバー側のトークンを検証する、5)短期アクセスや長期的なリフレイを使用するなどのトークンの取り消しメカニズムを実装する。

PHPセッションのセキュリティリスクには、主にセッションハイジャック、セッションの固定、セッション予測、およびセッション中毒が含まれます。 1。HTTPSを使用してCookieを保護することにより、セッションハイジャックを防ぐことができます。 2。ユーザーがログインする前にセッションIDを再生することにより、セッションの固定を回避できます。3。セッションの予測は、セッションIDのランダム性と予測不可能性を確保する必要があります。 4.セッションの中毒は、セッションデータを確認およびフィルタリングすることで防ぐことができます。

PHPセッションを破壊するには、最初にセッションを開始してから、データをクリアしてセッションファイルを破壊する必要があります。 1。Session_start()を使用してセッションを開始します。 2。Session_unset()を使用して、セッションデータをクリアします。 3.最後に、session_destroy()を使用してセッションファイルを破壊して、データのセキュリティとリソースのリリースを確保します。

PHPのデフォルトセッションの保存パスを変更する方法は?次の手順で達成できます。Session_save_path( '/var/www/sessions'); session_start(); PHPスクリプトで、セッション保存パスを設定します。 session.save_path = "/var/www/sessions"をphp.iniファイルに設定して、セッションの保存パスをグローバルに変更します。 memcachedまたはredisを使用して、ini_set( 'session.save_handler'、 'memcached')などのセッションデータを保存します。 ini_set(

tomodifydatainaphpsession、starthessession withsession_start()、$ _sessiontoset、modify、orremovevariables.1)startthessession.2)

配列はPHPセッションに保存できます。 1。セッションを開始し、session_start()を使用します。 2。配列を作成し、$ _Sessionで保存します。 3. $ _Sessionを介して配列を取得します。 4.セッションデータを最適化してパフォーマンスを向上させます。

PHPセッションガベージコレクションは、有効期限が切れたセッションデータをクリーンアップするために確率メカニズムを通じてトリガーされます。 1)構成ファイルにトリガー確率とセッションのライフサイクルを設定します。 2)Cronタスクを使用して、高負荷アプリケーションを最適化できます。 3)データの損失を避けるために、ごみ収集の頻度とパフォーマンスのバランスを取る必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

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

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









