我搞砸了一个较早的问题并将其删除(提供了一个错误的示例,导致了错误的解决方案)。米亚·库尔帕(Mea Culpa)
再次说明正确。我还需要介绍2不是字符串的第一个字符的情况。
我有这个字符串:
bobsmith2kgminus10meshcompt3kgfredrogers
我只想返回
2
。这是我的正则表达式:
.*(\d+?)kg.*
它正在返回
3
,我看不到我错过的一切。RegEx101.com Demo
我的python代码:
import re
val = 'bobsmith2kgminus10meshcompt3kgfredrogers'
out = re.sub(r'.*(\d+?)kg.*', r'\1', val)
print(out) #prints: 3
我也尝试过:
(.*)(\d+?)kg.*
(\d+?)kg.*
最佳答案
如果您确实要使用re.sub
,请使用:
.*?(\d+)kg.*
这将尽可能减少0个或更多字符,并在匹配和分组
\d+
之前根据需要扩展。码:
>>> import re
>>> val = 'bobsmith2kgminus10meshcompt3kgfredrogers'
>>> print ( re.sub(r'.*?(\d+)kg.*', r'\1', val) )
2
RegEx Demo
否则,您可以在
re.search
中使用此更简单的正则表达式:(\d+)kg
码:
>>> print ( re.search(r'(\d+)kg', val).group(1) )
2
关于python - Python正则表达式-不合宜的量词问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57331358/