0

私にとって非常に奇妙に思える例を見つけました。

import re
for test_string in ['955-1212', 'ILL-EGAL']:
if re.match(r'^\d{3}-\d{4}$', test_string):
    print test_string, 'is a valid US local phone number'
else:
    print test_string, 'rejected'

出力は次のとおりです: 955-1212 は有効な米国内の電話番号です ILL-EGAL 拒否されました

"^\d{3}-\d{4}$" とは正確には何ですか? 数字を変更すると、出力が次のように変更されます: 955-1212 拒否 ILL-EGAL 拒否

4

4 に答える 4

2

これは正規表現です-つまり、次のことを意味します。

^      from the start of the line
\d     match any number
{3}    repeated exactly 3 times
-      followed by a dash
\d     followed by a number
{4}    repeated exactly four times
$      followed by the end of the line

式を変更すると、次のいずれかになります。

  • 955-1212と一致する場合と一致しない場合がある別の正規表現
  • 無効な正規表現

正規表現について詳しくは、regular-expressions.infoなどをご覧ください。

于 2012-07-17T05:14:07.047 に答える
1

これは正規表現です。

\d一致し0-9{3}前のパターンの3つのオカレンスに一致し(そう\d{3}です\d\d\d)、-単なるダッシュであり、\d{4}同じです\d{3}が、もう1つあります\d^と文字は、それぞれ文字列の$開始と終了を示します。

正規表現は多かれ少なかれ凝った検索と置換です:http://docs.python.org/library/re.html

于 2012-07-17T05:14:23.827 に答える
1

^\d{3}-\d{4}$次のように変換されます。

文字列は、数字(\d)x 3({3})で始まり、その後
にダッシュ(-)が続き
、数字(\d)x 4({4})で終わる必要があります。

ここで正規表現パターンを確認できます

于 2012-07-17T05:14:46.157 に答える
1

これは正規表現であり、テキストのパターンを表現できる言語です。Python ライブラリは、文字列が正規表現に一致するかどうかをテストし、その文字列から断片を引き出す方法を提供します。

この特定のパターンでは:

  • ^は、文字列の先頭でパターンが一致する必要があることを意味します (文字列の先頭の文字はスキップできません)。
  • \d1 桁 (0 から 9 までの 1 文字) を意味します。** 次は、前の 3 回{3}を繰り返すことを意味します。したがって、3 桁を一致させます。\d
  • -- 文字に一致します。
  • \dもう一度、数字に一致... ** 次{4}は、今回は 4 回という意味です。
  • $は、攪拌の最後でパターンが一致する必要があることを意味します (文字列の最後の文字はスキップできません)。

したがって、3 または 4 を別のものに変更すると、パターンは異なる桁数に一致し、文字列 "955-1212" に一致しない理由が説明されます。たとえば、4 を 5 に変更した場合、文字列 "955-12123" は一致しますが、"955-1212" は一致しません。

于 2012-07-17T05:15:10.627 に答える