dポイントプレゼントキャンペーン実施中!

$pattern = "/http:\/\/([\w\.:]+)[\/]*([\w\.~\?=%\/&]*)[\/\b]{0}/"
の最後なんですが、よくわかりません。

A 回答 (2件)

最近AIに聞くことが多くなっています。

正しいかどうか分かりませんが、回答がないのでジピって見ました。

以下AIの回答から抜粋。


最後の部分「[/\b]{0}」について詳しく見てみましょう:

[\/\b]: これは、スラッシュ(/)またはバックスペース(\b)にマッチします。ただし、バックスペースは通常の文字列中には現れないため、ここではスラッシュ(/)にマッチすることが主な目的と考えられます。
{0}: これは直前の部分が0回出現することを意味します。すなわち、実際には「何にもマッチしない」ことを示しています。
この部分が含まれている理由としては、次のような可能性があります:

意図的な非マッチ: 何らかの意図で、スラッシュやバックスペースにマッチしないようにしている。
将来の拡張のためのプレースホルダー: この正規表現が将来的に拡張されることを見越して、プレースホルダーとして設置されている可能性。
エスケープミス: あるいは単なる誤りやエスケープミスの可能性もあります。
一般的には、この部分は正規表現の動作には影響しません。要するに、最後の「[/\b]{0}」は「何にもマッチしない」ことを明示的に示しているだけであり、正規表現の機能に直接的な影響はないと考えられます。
    • good
    • 0
この回答へのお礼

プログラム入門書から抜粋したのですが、難解です。誤字も見つけているので、ミスということもあるかもしれません。ありがとうございます。

お礼日時:2024/05/27 11:05

> 最後なんですが、よくわかりません。


の最後というのが、[\/\b]{0} のことなら、これは繰返し0回なので、何も書かないのと同じです。おそらくミスでしょう。この事だけなら単なるタイプミスの可能性もありますが、これ、PHPだと思いますが、パターン中に / が沢山出てくるのに全体を / で囲んで、 / にエスケープが必要となっているのが間抜けすぎますので、おそらく、「PHPのプログラム中に正規表現を書くにはどうするのか」をあまり知らない初心者が書いたのかと思います。

上記と等価な正規表現をすっきり書くと、こうなります。
$pattern = "@http://([\w.:]+)/*([\w.~?=%/&]*)@";

http:// で始まっているのでURLかどうかを判断する正規表現っぽいのですが、それだとすると間違っています。
このプログラム自体を「見なかったこと」にするのが良いかと思います。忘れましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A