我希望替换者取决于找到了什么。我所追求的一个例子可能是
def f(x):
return str(int(x) + 1)
print(re.sub(r"(\d)", f(r"\1"), "123"))
#print 234
然而,这当然不起作用。有没有什么方法可以做到我想要的,而不必跟踪找到的字符串的位置/长度,然后在下一行替换它?我正在寻找一种一次性的方法。你知道吗
请注意,我正在研究的实际示例并不是那么简单。我在做一个函数来解释一个数学计算字符串输入。你知道吗
例如“2+4*6/3”
该函数的思想是将“4*6”替换为24,然后将“24/3”替换为8,最后将“2+8”替换为10。它将搜索适当的对,并使用regex跟踪BIDMAS。你知道吗
也许这太简单了,但您可以通过先在乘法上应用正则表达式,然后在加法运算符上应用正则表达式,然后使用替换函数来构建一些简单的计算器:
在这里,regex尝试匹配“number operator number”(中间有可选空格),并在match上调用替换函数。你知道吗
replacement函数的作用是一致的,转换为整数,形成相关的操作,并返回一个要替换的字符串。你知道吗
当然,这不是为处理带括号的表达式而设计的,也永远不会是这样,请考虑第三方求值器,例如simpleeval(在pypi中搜索会得到几十个结果)
我知道这不是你想要的方法,但是你考虑过使用eval()函数吗?你知道吗
这当然比使用RegEx容易。你知道吗
相关问题 更多 >
编程相关推荐