Python 为什么这个正则表达式返回空
我有这些字符串:Python 为什么这个正则表达式返回空,python,regex,python-2.7,xpath,scrapy,Python,Regex,Python 2.7,Xpath,Scrapy,我有这些字符串: 电话:3396222 电话:+33333388 我想提取数字 我尝试了这个正则表达式: Phone:\s*(\d+\.\d+) r'Phone:\s*(\+?[\d.]+)' 但是我得到了一个空的结果 我正在使用scrapy,所以我的代码如下:sel.xpath(..).re(..) 请不要建议在python中使用正则表达式以外的其他功能正则表达式要求文本中有点,但示例输入没有点 演示: 如果要使任一示例电话号码匹配,请删除\.(而不是将其添加到字符集),然后在表达式中添加
电话:3396222
电话:+33333388
我想提取数字
我尝试了这个正则表达式:
Phone:\s*(\d+\.\d+)
r'Phone:\s*(\+?[\d.]+)'
但是我得到了一个空的结果
我正在使用scrapy,所以我的代码如下:sel.xpath(..).re(..)
请不要建议在python中使用正则表达式以外的其他功能正则表达式要求文本中有
点,但示例输入没有点
演示:
如果要使任一示例电话号码匹配,请删除\.
(而不是将其添加到字符集),然后在表达式中添加可选的+
:
Phone:\s*(\d+\.\d+)
r'Phone:\s*(\+?[\d.]+)'
演示:
此图案还允许在数字中使用任意数量的点:
>>> re.search(r'Phone:\s*(\+?[\d.]+)', 'Phone: +333.333.88').group(1)
'+333.333.88'
您正在要求在正则表达式中强制使用点(.)。配对可选:
Phone:\s*\+?(\d+\.?\d+)
^^^ ^
我已通过添加可选的
\+
进行更新,因为您在输入中添加了+
。您的字符串中没有
。我自己找到了解决方案,我应该使用此电话:\s*(\d+)