我找到了一个对我来说似乎很奇怪的例子:
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拒绝
答案 0 :(得分:2)
这是regular expression - 意思是:
^ 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
更改表达式将导致:
答案 1 :(得分:1)
这是一个正则表达式。
\d
匹配0-9
,{3}
匹配前一个模式的三次出现(因此\d{3}
为\d\d\d
),-
只是一个短划线,\d{4}
就像\d{3}
,但还有一个\d
。 ^
和$
字符分别表示字符串的开头和结尾。
正则表达式或多或少花哨的搜索和替换:http://docs.python.org/library/re.html
答案 2 :(得分:1)
^\d{3}-\d{4}$
转换为:
字符串必须以数字(\d
)x 3({3}
),
开头
短划线(-
),
然后以数字(\d
)x 4({4}
)
答案 3 :(得分:1)
这是一种regular expression,一种允许您表达文本模式的语言。 python库为您提供了测试字符串是否与正则表达式匹配的方法,并从该字符串中拉出片段。
以这种特殊模式:
^
表示模式必须在字符串的开头匹配(不能跳过字符串开头的字符)。\d
表示一个数字(0到9之间的一个字符)。
**以下{3}
表示重复之前的\d
三次 - 所以匹配三位数。-
匹配 - 字符。\d
,匹配一个数字......
**以下{4}
这次意味着四次。$
表示模式必须在stirng结尾处匹配(字符串末尾的字符可能不会被跳过)。因此,如果您将3或4更改为其他内容,则该模式将匹配不同数量的数字,这就解释了为什么它无法匹配字符串“955-1212”。例如,如果您将4更改为5,则字符串“955-12123”将匹配,但“955-1212”将不匹配。