我有兴趣使用Python re模块在表达式中搜索整数。例如,给出字符串
1e2 - variabl3e+2 + atan2(8/3.0, -1.)
^ ^
我想提取2
和8
。作为一个起点,我有
(?<![a-zA-Z_.])(?<![eE][-+])(\d+)(?![eE.])
使用负前瞻和后观来排除形成浮点数或变量/函数的整数的整数。问题在于,由于2
位而导致variabl3e+2
中的e+2
被排除,因此2
似乎是浮点指数。
然而,如果没有可变宽度的负面观察,我无法想到处理这种情况的方法。
答案 0 :(得分:0)
您可以匹配不在字母或点之前或之后的数字。
[^\w\.-](\d+)[^\w\.-]
这个正则表达式通过了简单的测试。 https://regex101.com/r/tV3zZ1/2
作为@jonrsharpe said,使用真正的解析器更安全。
答案 1 :(得分:0)
match = re.search(r'e[+-](\d).+\W\w+\((\d)',st)
if match is not None:
print(match.groups())
else:
print("no match")
('2', '8')