gpt4 book ai didi

python - python正则表达式替换中的if语句

转载 作者:行者123 更新时间:2023-11-28 22:35:46 25 4
gpt4 key购买 nike

我有一个用于搜索 thisthat 的正则表达式。如果它找到 this,它会用 ONE 替换它。如果找到 that,它会将其替换为 TWO

这是它在 Perl 中的样子:

m =~ s/(this)|(that)/ "ONE" x!! $1 . "TWO" x!! $2 /eg

eeval 选项。 . 是一个串联。 x!! 充当 if 语句。

如何在 Python 3 中做同样的事情?我正在寻找类似的东西:

m = re.sub(r"(this)|(that)", ("ONE" * bool(match.group(1))) + ("TWO" * bool(match.group(2))), m, flags=re.EVAL)

我想我有两个主要障碍。首先,我不知道如何在正则表达式替换中获取 match 对象。其次,我不知道 python 是否支持 eval 或者最好的选择是什么。

最佳答案

Python 没有与正则表达式相关的奇怪语言语法 - 它们在行为良好的函数调用中执行。

因此,您所拥有的不是在匹配时执行的部分调用参数,而是一个回调函数:您所要做的就是将一个可调用对象作为第二个参数,而不是替换字符串。可调用对象接收匹配对象作为其唯一参数。

在这种情况下,您只需要一个内联的 if - 因此您甚至可以将可调用对象定义为 lambda 表达式:

t = "this this that"
m = re.sub(r"(this)|(that)", lambda x: "ONE" if x.group() == "this" else "TWO", t )

关于python - python正则表达式替换中的if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com