テキストがあり、最長のテキストではなく、可能な限り短いテキストのみを照合したいとします。この記事では主に、正規表現における最短一致パターンの使用法に関する関連情報を紹介します。
はじめに
最近、正規表現を使ってWebページから何かを取得したいと考えました。内容は複雑ではありませんでしたが、多くの問題がありました。以下で言うことはあまりありませんが、詳細な紹介を見てみましょう:
4a249f0d628e2318394fd9b75b4636b1hello world473f0a7621bec819994bb5020d29372a
の h1 の開始タグと終了タグを一致させるなど、タグの先頭と末尾を一致させるために正規表現を使用する場合、多くの人は次のように書くかもしれません。こんな感じ
/<.*h1>/g
でも本当にこれでいいの?
* 一致する文字は前の文字の 0 個以上と一致し、貪欲一致であるため
、次の結果が得られます。
明らかにこれは私たちが望んでいることではないので、貪欲なマッチングを最小限のマッチングに変更する方法
/<.*?h1>/g
以下に示すように、上記の記述で十分です。実際、原理は非常に単純であるはずです。なぜなら、 ? も貪欲一致であり、0 から 1 にのみ一致するからです
したがって、最初の一致に一致すると終了し、* が複数の貪欲一致に一致することを防ぎます。
関連する推奨事項:
以上が正規表現での最短一致パターンの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。