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],依此类推。太棒了!再次感谢。