【发布时间】:2021-10-27 11:59:41
【问题描述】:
我想查找所有以“0”开头后跟 10 位数字的电话号码。
r1=re.search('^[0]+\d{10}',i)
但是,其中一些写为“01-234-567-8-90”,从技术上讲,它是一个 0 后跟 10 位数字,但其中包含破折号。当我运行正则表达式搜索命令时,它无法识别它。
有没有办法告诉正则表达式忽略某些字符,例如“”和“-”?
【问题讨论】:
-
*是错字,请删除。 -
您可能打算使用
re.search(r'(?<!\d)0(?:-?\d){10}(?!\d)',i)。或者,r'^0(?:-?\d){10}$'。 “找到”是什么意思?您在哪里寻找匹配项? -
您是否被严格限制为一个
re.search,或者您是否允许使用python预处理文本? -
@WiktorStribiżew 非常感谢,它有效。快速提问:我不明白语句中括号 () 的位置,具体来说:为什么我们这样做 ...
0(?:-?\d){10}... 而不是 ...0(?:-?)\d{10}.... 换句话说,为什么要在括号中加上\d?