【发布时间】:2017-09-10 22:23:42
【问题描述】:
我希望替换取决于找到的内容。 IE。我所追求的一个例子可能如下
def f(x):
return str(int(x) + 1)
print(re.sub(r"(\d)", f(r"\1"), "123"))
#print 234
但是,这当然行不通。是否有某种方式可以做我想做的事情,而不必跟踪找到的字符串的位置/长度,然后在下一行替换它? IE。我正在寻找一种一次性完成此操作的方法。
请注意,我正在处理的实际示例并不那么简单。我正在制作一个解释数学计算字符串输入的函数。
例如。 “2 + 4 * 6 / 3”
这个想法是函数将“4 * 6”替换为 24,然后将“24 / 3”替换为 8,最后将“2 + 8”替换为 10。它将搜索合适的对并使用 BIDMAS正则表达式。
【问题讨论】:
-
正则表达式替换可以是一个函数:stackoverflow.com/questions/45620436/…,但您的评估者可能会因括号和/或运算符优先级而窒息。
-
@Rightleg 是的,看起来像,但不像原来的问题那么简单。如果是你,谢谢你的支持:),如果不是,谢谢你的支持。
-
@Jean-FrançoisFabre 是的,是我 ^^ 嗯,我目前(终于!)正在学习
re,我不知道这种可能性,所以... -
@Rightleg 这不是很有名,但超级强大。