什么是匹配字符串中任何有效的 Python 整数文字的正则表达式?它应该支持所有额外的东西,比如oand 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与