忽略正则表达式 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
我想查找所有 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