正则表达式:匹配表达式中的整数

2024-09-30 19:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我对使用Python re模块在表达式中搜索整数感兴趣。例如给定字符串

1e2 - variabl3e+2 + atan2(8/3.0, -1.)
                ^         ^

我想提取28。作为一个起点

(?<![a-zA-Z_.])(?<![eE][-+])(\d+)(?![eE.])

它使用负的lookahead和lookahead来排除构成浮点数或变量/函数一部分的整数。问题是这排除了variabl3e+2中的2,因为e+2位使它看起来好像2是浮点指数。你知道吗

但是,如果没有可变宽度的负后视镜,我想不出一种处理这种情况的方法。你知道吗


Tags: 模块函数字符串re表达式整数感兴趣ee
2条回答

您可以匹配前面或后面没有字母或点的数字。你知道吗

[^\w\.-](\d+)[^\w\.-]

这个正则表达式通过简单的测试。https://regex101.com/r/tV3zZ1/2

作为@jonrsharpe said,使用真正的解析器更安全。你知道吗

match = re.search(r'e[+-](\d).+\W\w+\((\d)',st)

if match is not None:
    print(match.groups())
else:
     print("no match")

('2', '8')

相关问题 更多 >