导入示例^ \ d {3} - \ d {4} $“”

时间:2012-07-17 05:10:23

标签: python

我找到了一个对我来说似乎很奇怪的例子:

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 个答案:

答案 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

更改表达式将导致:

  • 另一个可能与955-1212匹配或不匹配的正则表达式
  • 无效的正则表达式

您可以在regular-expressions.info

等地方了解有关正则表达式的更多信息

答案 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}

结束

您可以查看regular expression patterns here

答案 3 :(得分:1)

这是一种regular expression,一种允许您表达文本模式的语言。 python库为您提供了测试字符串是否与正则表达式匹配的方法,并从该字符串中拉出片段。

以这种特殊模式:

  • ^表示模式必须在字符串的开头匹配(不能跳过字符串开头的字符)。
  • \d表示一个数字(0到9之间的一个字符)。 **以下{3}表示重复之前的\d三次 - 所以匹配三位数。
  • -匹配 - 字符。
  • 再次
  • \d,匹配一个数字...... **以下{4}这次意味着四次。
  • $表示模式必须在stirng结尾处匹配(字符串末尾的字符可能不会被跳过)。

因此,如果您将3或4更改为其他内容,则该模式将匹配不同数量的数字,这就解释了为什么它无法匹配字符串“955-1212”。例如,如果您将4更改为5,则字符串“955-12123”将匹配,但“955-1212”将不匹配。