什么是匹配字符串中任何有效的 Python 整数文字的正则表达式?它应该支持所有额外的东西,比如o
and l
,但不匹配浮点数或其中包含数字的变量。我正在使用 Python 的re
,所以它支持的任何语法都可以。
编辑:这是我的动机(显然这很重要)。我正在尝试修复http://code.google.com/p/sympy/issues/detail?id=3182。我想要做的是为 IPython 创建一个钩子,它自动将 int/int (like 1/2
) 转换为Rational(int, int)
, (like Rational(1, 2)
。原因是否则不可能1/2
注册为有理数,因为它是 Python 类型的__div__
Python 类型。在SymPy,这可能很烦人,因为当你想要的是一个精确的数量 时,x**(1/2)
会创建x**0
(或x**0.5
使用除法或 Python 3)之类的东西。__future__
x**Rational(1, 2)
我的解决方案是在 IPython 中添加一个钩子,该钩子会自动将输入中的所有整数文字包装为 Integer(SymPy 的自定义整数类,Rational
用于除法)。这将让我添加一个选项isympy
,让 SymPy 在这方面更像一个传统的计算机代数系统,对于那些想要它的人来说。我希望这可以解释为什么我需要它来匹配任意 Python 表达式中的任何和所有文字,这就是为什么它不需要匹配名称中带有数字的浮点文字和变量。
另外,由于每个人都对我尝试的内容如此感兴趣,所以这里是:在我放弃之前没有多少(正则表达式很难)。我试着(?!\.)
让它不捕捉浮点文字的第一部分,但这似乎不起作用(如果有人能告诉我为什么,我会很好奇,一个例子是re.sub(r"(\d*(?!\.))", r"S\(\1\)", "12.1")
)。
编辑 2re.sub
:由于我打算将它\1
与