Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式[\d+;]_Python_Regex - Fatal编程技术网

Python正则表达式[\d+;]

Python正则表达式[\d+;],python,regex,Python,Regex,我正在研究正则表达式python,我遇到了这个问题 有效的手机号码是以7、8或9开头的10位数字。 我的解决办法是: if len(x)==10 and re.search(r'^[7|8|9]+[\d+]$',x): 这是我的错误。后来我把它改成了 if len(x)==10 and re.search(r'^[7|8|9]+\d+$',x): 所有测试用例都通过了。我想知道在正则表达式中对\d+使用和不使用[]有什么区别 谢谢[\d+]=一位数(0-9)或+字符 \d+=一个或多个数字。

我正在研究正则表达式python,我遇到了这个问题

有效的手机号码是以7、8或9开头的10位数字。 我的解决办法是:

if len(x)==10 and re.search(r'^[7|8|9]+[\d+]$',x):
这是我的错误。后来我把它改成了

if len(x)==10 and re.search(r'^[7|8|9]+\d+$',x):
所有测试用例都通过了。我想知道在正则表达式中对
\d+
使用和不使用
[]
有什么区别


谢谢

[\d+]
=一位数(
0-9
)或
+
字符

\d+
=一个或多个数字。

您还可以执行以下操作:

if re.search(r'^[789]\d{9}$', x):

让正则表达式通过使用显式长度而不是无界重复来处理
len(x)==10
部分。

我认为您需要一个关于
[]
+
的一般解释

[]
将与内部指定的单个字符匹配。
例如:
[qwe]
将与
q
w
e
匹配

如果要在
[]
中输入表达式,则需要将其用作
[^expression]

+
将与前面的元素匹配一次或多次。 例如:
qw+e
匹配
qwe
qwwe
qwwe
,等等 注意:这与
*
不同,因为
*
与前面的元素零次或多次匹配。i、 e.
qw*e
也与
qe
匹配


\d
与数字匹配。(不仅仅是
0-9
,还有其他语言脚本中的数字。)

我不知道复杂性,但这也是可行的:

if (len(x)==10 and "789"==x[1:4]):

[\d]+
应该是正确的,
[\d+]
表示一个数字或加号字符。还要从character类中删除
|
s,因为它们仅被视为literal
|
我认为您需要阅读regexp教程。您似乎正在使用
[]
来查找内部的单个字符。例如:
[abc]
查找
a
b
c
。转义序列在
[]
内部工作,因此它是一个数字或
+