Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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 - Fatal编程技术网

Python 正则表达式在匹配模式后获取数字

Python 正则表达式在匹配模式后获取数字,python,regex,python-2.7,Python,Regex,Python 2.7,我创建了一个正则表达式模式以匹配以下内容: 'x': 10.61 # Any number, can be negative re.findall("'x':\K\s[-+]?\d*\.*\d+", info) Regex:'x':\s[-+]?\d*\.\d+ 但是,我只想获取数字,因此尝试了以下操作: 'x': 10.61 # Any number, can be negative re.findall("'x':\K\s[-

我创建了一个正则表达式模式以匹配以下内容:

'x': 10.61                # Any number, can be negative
re.findall("'x':\K\s[-+]?\d*\.*\d+", info)
Regex
'x':\s[-+]?\d*\.\d+

但是,我只想获取数字,因此尝试了以下操作:

'x': 10.61                # Any number, can be negative
re.findall("'x':\K\s[-+]?\d*\.*\d+", info)
但据我所知,
\K
在python上不起作用

是否有任何可匹配的备选方案,例如:
10.61

这应该可以:

info = "'x': 10.61"
items = re.findall("'x':\s([-+]?\d*\.*\d+)", info)
print(items[0]) # 10.61

如果您的输入总是
some char:wanted num
,则可以使用分隔符
拆分返回的字符串,并从返回列表的位置1获取该字符串

result = re.findall("'x':\s[-+]?\d*\.*\d+", info)
digits = [ i.split(":")[1] for i in result ]

re.match()
函数使用以下方法:

info = "'x': 10.61"
m = re.match(r"'x':\s*?([+-]?\d+([.]\d+)?)", info)
num = m.group(1)
print(num)  # 10.61

您可以将您的号码存储到一个捕获组中并访问它。如果它按您希望的方式工作,
\K
会怎么做?@Robᵩ 在PCRE(和其他风格)中,K是一个匹配重置,从匹配中省略了以前匹配过的所有内容。在我看来,与
\K
最接近的功能匹配是正向查找断言:
(?太好了!工作起来很有魅力!更好的解释是:)谢谢。正则表达式和你的差不多,但是我在parentesies()中得到了数字,所以当正则表达式执行时,每个括号都被捕获到数组中。因此,第一个元素将是items[0],第二个括号(如果存在)将是items[1],依此类推。太棒了!再次感谢。