ホームページ よくある問題 正規表現を学習する初心者にありがちな間違い

正規表現を学習する初心者にありがちな間違い

Nov 09, 2019 pm 05:42 PM
よくある間違い 通常

通常ルールの利点は、使いやすいことです。数時間勉強すれば、ほとんどの通常ルールを理解できます。理解できても、実践する過程では、まだ多くのことに遭遇します。この記事では、正規表現の学習過程でよくある間違いをまとめました。

正規表現を学習する初心者にありがちな間違い

#正規表現

1.スペース

私たちは通常、コードを書くことがあります。 、スペースは通常、コードをより標準化するためのツールとして使用され、行頭の適切なインデントやタブと組み合わせることで、コードがより明確に見えます。ただし、正規表現では注意が必要です - スペース自体も照合対象の文字です。スペースを不適切に使用した場合:

echo preg_match('/a{1, 3}/', "aaa") ? '匹配' : '不匹配';  // 不匹配
ログイン後にコピー

たとえば、上記の正規表現は 1 ~ 3 つの a に照合することを目的としています。しかし実際には、次の 3 つの a とは一致しません。これは、{1, 3} の真ん中に余分なスペースがあり、メタキャラクタ「{}」の本来の意味が無効になり、通常の文字になるためです。代わりに ##"a {1, 3}" が照合されますが、これは明らかに私たちが望んでいることではありません。そのため、スペース文字自体が照合されない限り、スペースを使用しないでください。

echo preg_match('/a{1, 3}/', "a{1, 3}") ? '匹配' : '不匹配';  // 匹配
ログイン後にコピー

# 例外パターン修飾子 理解するのが難しいため、使用はお勧めできません:

echo preg_match('/a{1,3}/', "aaa") ? '匹配' : '不匹配';  // 匹配
ログイン後にコピー

2. 大文字の使用

これは理解するのは簡単ですが、基本的にはうっかりミスです。結局のところ、検索ツールで文字を検索するとき、通常は大文字と小文字の両方が一致します。場合によっては、正規表現が大文字と小文字を自動的に一致させないことを忘れることがあります:

echo preg_match('/a a a/x', "aaa") ? '匹配' : '不匹配';  // 匹配
ログイン後にコピー

このように一致する文字列の最初の文字が大文字になっている場合がありますが、当然一致しませんが、このとき大文字と小文字の両方を考慮する必要があります。しかし、特定の単語を一致させたい場合があります。この 4 文字が一致する限り、次のように書くのはさらに面倒です:

echo preg_match('/flag/', "Flag") ? '匹配' : '不匹配';  // 不匹配
ログイン後にコピー

「fLaG」などという奇妙なものがあるとは想像しにくいですが、 「書き方ですが、このように書かないと全ての状況にマッチすることはできません。大文字と小文字を気にしない場合もありますが、マッチする文字列が非常に長い場合があります。恐れ入りますが、このように書くと疲れてしまいますが、幸いなことに「i」修飾子があります。シンボル:

echo preg_match('/[Ff][Ll][Aa][Gg]/', "Flag") ? '匹配' : '不匹配';  // 匹配
ログイン後にコピー

修飾子「i」が設定されている場合、パターン内での大文字と小文字の一致は区別されません。

3. 貪欲モード

量子「 」と「*」はデフォルトで貪欲モードです。初心者はそれが引き起こす問題に遭遇しないかもしれません。何が理解できませんかこれは、kano の例です:

echo preg_match('/flag/i', "Flag") ? '匹配' : '不匹配';  // 匹配
ログイン後にコピー

正規表現を学習する初心者にありがちな間違い正規表現の本来の目的は、文字列内のすべての Span タグを検索することです。それらを配列に入れましたが、結果は奇妙です。両方のスパンが一度に一致しました。実際、よく考えてみると、これは当然のことであり、文字列「aaabbb」は確かに で始まり で終わります。ですが、その中の .* が一致する内容が多すぎます。「aaabbb」はすべて一致します。これは、「 」と「*」の貪欲モードです。デフォルトでは、これらは可能な限り多くの文字に一致します。最後に「?」を追加すると、この貪欲モードがキャンセルされ、可能な限り少ないコンテンツのみに一致するようになります。

preg_match_all(&#39;/<span>.*<\/span>/&#39;, "<span>aaa</span><span>bbb</span>", $matches);
var_dump($matches);
ログイン後にコピー

今回は希望どおりの結果が得られました。 正規表現を学習する初心者にありがちな間違い

通常の構文は非常に特殊なので、注意しないと簡単に問題が発生します。

推奨学習: 「

正規表現の簡単な紹介

以上が正規表現を学習する初心者にありがちな間違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Golang 正規表現を使用して複数の単語または文字列を照合するにはどうすればよいですか? Golang 正規表現を使用して複数の単語または文字列を照合するにはどうすればよいですか? May 31, 2024 am 10:32 AM

Golang の正規表現では、パイプ文字 | を使用して複数の単語または文字列を一致させ、各オプションを論理 OR 式として区切ります。例: 「fox」または「dog」に一致します: fox|dog は「quick」、「brown」または「lazy」に一致します: (quick|brown|lazy) 「Go」、「Python」または「Java」に一致します: Go| Python |Java は単語または 4 桁の郵便番号と一致します: ([a-zA

PHP正規表現で何かで始まる文字列を置換する方法 PHP正規表現で何かで始まる文字列を置換する方法 Mar 24, 2023 pm 02:57 PM

PHP 正規表現は、テキストの処理と変換のための強力なツールです。テキスト コンテンツを解析し、特定のパターンに従って置換またはインターセプトすることで、テキスト情報を効果的に管理できます。その中でも、正規表現の一般的な応用例は、特定の文字で始まる文字列を置換することです。

正規表現を使用してPHPで漢字を削除する方法 正規表現を使用してPHPで漢字を削除する方法 Mar 03, 2023 am 10:12 AM

正規表現を使用して PHP で中国語を削除する方法: 1. PHP サンプル ファイルを作成する; 2. 中国語と英語を含む文字列を定義する; 3. "preg_replace('/([\x80-\xff]*)/i', '',$a);" 通常の方法では、クエリ結果から中国語の文字を削除できます。

通常のマッチングを使用してphpでhtmlタグを削除する方法 通常のマッチングを使用してphpでhtmlタグを削除する方法 Mar 21, 2023 pm 05:17 PM

この記事では、PHP 正規表現を使用して HTML タグを削除し、HTML 文字列からプレーン テキスト コンテンツを抽出する方法を学びます。 HTML タグを削除する方法を示すために、まず HTML タグを含む文字列を定義しましょう。

一般的な Golang 型変換エラーとその解決策 一般的な Golang 型変換エラーとその解決策 Feb 25, 2024 am 08:30 AM

Golang の型変換における一般的なエラーと解決策 Golang を使用した開発プロセスにおいて、型変換は間違いなく頻繁に遭遇する問題です。 Golang は静的型付け言語ですが、場合によっては、interface{} 型から特定の構造型への変換や、ある基本データ型から別の基本データ型への変換など、型変換を実行する必要があります。{}ただし、型変換中にエラーが発生することがよくあるため、この記事ではよくある型変換エラーをいくつか紹介します。

C++ プログラムで発生する一般的なエラーとその解決策: 「セグメンテーション違反」エラー C++ プログラムで発生する一般的なエラーとその解決策: 「セグメンテーション違反」エラー Aug 26, 2023 pm 12:42 PM

C++ プログラムで発生する一般的なエラーとその解決策: 「segmentationfault」エラー C++ プログラミング プロセス中に、さまざまなエラーが発生することがよくあります。その中でよくあるエラーが「segmentationfault」です。プログラムの実行中にこのエラーが発生する場合は、通常、プログラムが存在しない、または不正なメモリ アドレスにアクセスしようとしており、プログラムがクラッシュすることを意味します。このエラーにより、プログラムの実行が失敗し、コマンド ラインまたは端末にエラー メッセージが表示される場合があります。

PHP 正規表現を使用して中国語置換関数を実装するためのヒントを共有する PHP 正規表現を使用して中国語置換関数を実装するためのヒントを共有する Mar 24, 2024 pm 05:57 PM

PHP 正規表現を使用して中国語の置換機能を実装するためのヒントを共有する Web 開発では、中国語のコンテンツを置換する必要がある状況によく遭遇します。人気のサーバーサイド スクリプト言語として、PHP は中国語の置換を簡単に実現できる強力な正規表現機能を提供します。この記事では、正規表現を使用して PHP で中国語置換を実装するためのテクニックをいくつか紹介し、具体的なコード例を示します。 1. preg_replace 関数を使用して中国語置換を実装します PHP の preg_replace 関数を使用できます

PHP クエリ ステートメントの注意事項と一般的なエラー PHP クエリ ステートメントの注意事項と一般的なエラー Mar 22, 2024 am 11:42 AM

PHP は Web 開発で広く使用されているプログラミング言語で、さまざまなデータベースと対話してデータのクエリと操作を実装できます。 PHP をクエリ操作に使用する場合、よくあるエラーを避けるために特に注意する必要があるいくつかの点に注意する必要がありますが、ここでは、PHP クエリ ステートメントの注意事項とよくあるエラーを詳細に紹介し、読者がよりよく理解できるように具体的なコード例を示します。 1. データベースに接続する PHP クエリを実行する前に、まずデータベースに接続する必要があります。 PHP の組み込み mysqli (MySQLI) を使用します。