python - 正则表达式与前面的字符中断
问题描述
我试图通过编译这个正则表达式从一组字符串中解析一个电话号码:
exp = re.compile(r'(\+\d|)(([^0-9\s]|)\d\d\d([^0-9\s]|)([^0-9\s]|)\d+([^0-9\s]|)\d+)')
这与“+1(123)-456-7890”之类的行成功匹配。但是,如果我在它前面添加任何内容,例如“P: +1(123)-456-7890”,它就会不匹配。我在 Regex 网站上进行了测试,但根本无法弄清楚这一点。
解决方案
您可以考虑使用re.search
(which scans) 而不是re.match
,它只查看字符串的开头。您可以改为.*
在开头添加 a 。