ホームページ  >  記事  >  バックエンド開発  >  正規表現「\d 」が数字だけではなく「78.46.92.168:8000」のような IP アドレスと一致するのはなぜですか?

正規表現「\d 」が数字だけではなく「78.46.92.168:8000」のような IP アドレスと一致するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-13 06:43:02119ブラウズ

Why does the regex

正規表現を使用した文字列全体のチェック

正規表現「d」を使用して文字列が数値かどうかを判断しようとすると、このパターンは「78.46.92.168:8000」のような IP アドレスにも一致することがわかります。 「d」は数字のみに一致すると予想されるため、これは混乱を招く可能性があります。これが発生する理由を理解するには、「d」の動作を理解する必要があります。

gt;「d」について

「d」文字クラスは、どの文字クラスとも一致します。 ASCII 範囲 (0 ~ 9) 内の 1 桁の文字。 " " 量指定子は、先行する要素 (この場合は "d") が 1 つ以上出現することを示し、"d " が 1 つ以上の数字のシーケンスに一致することを示します。

例の文字列 "78.46. 92.168:8000」の場合、シーケンス「78」は「d」と有効に一致します。文字列全体ではなく、最初の 78 個と一致します。一致が成功したため、コードは doStuff() の呼び出しに進みます。

文字列全体の一致

文字列全体を一致させ、文字列に数字のみが含まれていることを確認します。 、より具体的な正規表現パターンを使用する必要があります。

  • **「^」と「$」の追加:** 「^」 (文字列の先頭) と「$」 (文字列の末尾) を追加します。 ) を正規表現に追加すると、入力文字列全体と一致することが保証されます。たとえば、「^d $」は数字のみで構成される文字列にのみ一致します。
  • 「isdigital()」の使用: Python は文字列に対して "isdigital()" メソッドを提供します。文字列全体に数字のみが含まれているかどうかを示すブール値。たとえば、"78.46.92.168:8000".isdigit() は、文字列に数字以外の文字が含まれているため、False を返します。

以上が正規表現「\d 」が数字だけではなく「78.46.92.168:8000」のような IP アドレスと一致するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。