忽略正则表达式 Python 中的字符?

Ignore character in Regex Python?

我想查找所有 phone 以“0”开头且后跟 10 位数字的号码。

r1=re.search('^[0]+\d{10}',i)

但是,其中一些写为“01-234-567-8-90”,从技术上讲,它是一个 0 后跟 10 位数字,但其中有破折号。当我 运行 正则表达式搜索命令时,它无法识别它。

有没有办法让正则表达式忽略某些字符,例如“ ”和“-”?

我相信有更好的方法,但您可以在正则表达式搜索之前删除连字符。

i.replace('-', ''))

我想验证一下,你可以像

一样去掉“-”
phone_number_without_hyphens = phone.replace("-", "")

然后用正则表达式检查

re.search('^[0]+\d*{10}', phone_number_without_hyphens)

您可以使用

re.search(r'0(?:-?\d){10}',i)

正则表达式匹配

  • 0 - 零数字
  • (?:-?\d){10} - 匹配连续出现 10 次的非捕获组
    • -? - 一个可选的连字符
    • \d - 一个数字。

参见regex demo

如果您不希望匹配的两端出现其他数字,请添加数字边界:

(?<!\d)0(?:-?\d){10}(?!\d)

(?<!\d)后向确保左边没有数字,(?!\d)前瞻确保右边没有数字,所以我们匹配长度为 11 位的数字

^[0(?:+44)][ -]?\d[ -]?\d[ -]?\d[ -]?\d[ -]?\d[ -]?\d[ -]?\d[ -]?\d[ -]?\d[ -]?\d$

或 ^[0(?:+44)](?:[-]?\d){10}$ cleaner