Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么这个正则表达式返回空_Python_Regex_Python 2.7_Xpath_Scrapy - Fatal编程技术网

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+)