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
  • 无效的正则表达式
您可以在

It is 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
  • 无效的正则表达式
您可以在以下位置了解有关正则表达式的更多信息

这是一个正则表达式

\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库为您提供了测试字符串是否与正则表达式匹配的方法,并从该字符串中提取片段

在这种特殊模式中:

  • ^
    表示模式必须在字符串开头匹配(不能跳过字符串开头的字符)
  • \d
    表示一个单个数字(0到9之间的一个字符)。 **下面的
    {3}
    意味着将前面的
    \d
    重复三次——因此匹配三位数字
  • -
    匹配一个-字符
  • \d
    再次匹配一个数字。。。 **下面的
    {4}
    表示这次四次
  • $
    表示模式必须在字符串末尾匹配(不能跳过字符串末尾的字符)
因此,如果将3或4更改为其他数字,则模式将匹配不同数量的数字,这解释了为什么它无法匹配字符串“955-1212”。例如,如果将4更改为5,则字符串“955-12123”将匹配,但“955-1212”将不匹配。

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

在这种特殊模式中:

  • ^
    表示模式必须在字符串开头匹配(不能跳过字符串开头的字符)
  • \d
    表示一个单个数字(0到9之间的一个字符)。 **下面的
    {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-正确-我在原始答案中遗漏了它-已更新,谢谢!