Python 导入示例^\d{3}-\d{4}$"&引用;
我发现了一个对我来说很奇怪的例子:Python 导入示例^\d{3}-\d{4}$"&引用;,python,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是有效的美国本地电话号码 不良法律被拒绝 什
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是有效的美国本地电话号码
不良法律被拒绝
什么是“^\d{3}-\d{4}$”,因为当我更改某个数字时,它会将输出更改为:
955-1212被拒绝
ILL-EGAL被拒绝它是a-它的意思是:
^ 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
- 无效的正则表达式
^ 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
- 无效的正则表达式
\d
匹配0-9
,{3}
匹配前一个模式的三次出现(因此\d{3}
是\d\d
),-
只是一个破折号,\d{4}
就像\d{3}
一样,但还有一个\d
。^
和$
字符分别表示字符串的开始和结束
正则表达式或多或少是一种奇特的搜索和替换:这是一个正则表达式
\d
匹配0-9
,{3}
匹配前一个模式的三次出现(因此\d{3}
是\d\d
),-
只是一个破折号,\d{4}
就像\d{3}
一样,但还有一个\d
。^
和$
字符分别表示字符串的开始和结束
正则表达式或多或少是一种奇特的搜索和替换:
^\d{3}-\d{4}$
转换为:
字符串必须以数字(\d
)x 3({3}
)开头,后跟破折号(
-
),然后以数字(
\d
)x 4({4}
)结尾
您可以查看
^\d{3}-\d{4}$
转换为:
字符串必须以数字(\d
)x 3({3}
)开头,后跟破折号(
-
),然后以数字(
\d
)x 4({4}
)结尾
你可以回顾一下它是一种语言,一种允许你表达文本模式的语言。python库为您提供了测试字符串是否与正则表达式匹配的方法,并从该字符串中提取片段
在这种特殊模式中:
表示模式必须在字符串开头匹配(不能跳过字符串开头的字符)^
表示一个单个数字(0到9之间的一个字符)。 **下面的\d
意味着将前面的{3}
重复三次——因此匹配三位数字\d
匹配一个-字符-
再次匹配一个数字。。。 **下面的\d
表示这次四次{4}
表示模式必须在字符串末尾匹配(不能跳过字符串末尾的字符)$
表示模式必须在字符串开头匹配(不能跳过字符串开头的字符)^
表示一个单个数字(0到9之间的一个字符)。 **下面的\d
意味着将前面的{3}
重复三次——因此匹配三位数字\d
匹配一个-字符-
再次匹配一个数字。。。 **下面的\d
表示这次四次{4}
表示模式必须在字符串末尾匹配(不能跳过字符串末尾的字符)$
因此,如果将3或4更改为其他数字,则模式将匹配不同数量的数字,这解释了为什么它无法匹配字符串“955-1212”。例如,如果您将4更改为5,则字符串“955-12123”将匹配,但“955-1212”将不匹配。当我运行此操作时,我得到“955-1212是有效的美国本地电话号码ILL-EGAL rejected”-但仅当我从“if”开始缩进行后…当我运行此操作时,我得到“955-1212是有效的美国本地电话号码ILL-EGAL rejected”-但只有在我从“if”开始缩进行之后…最后的$匹配字符串的结尾-因此将其锁定到结尾。这意味着,如果在它之前或之后有空格,它将失败。@Sean-正确-我在原始答案中遗漏了它-已更新,谢谢!最后一个$匹配字符串的结尾-因此将其锁定到结尾。这意味着,如果在它之前或之后有空格,它将失败。@Sean-正确-我在原始答案中遗漏了它-已更新,谢谢!