gpt4 book ai didi

python re.sub 与 re.search 行为不一致

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:36 25 4
gpt4 key购买 nike

我在一段代码中尝试进行一些搜索和替换。我的代码通常按预期工作,但我遇到了一个违背我预期的用例。在有问题的例子中,我有

input_regex = 'Cooper S \\(3doors\\)'
subst_regex = 'Cooper S Hardtop 2 Door'

最初

input_text = 'cooper s (3doors)'

我的代码片段:

matchobject = re.search(input_regex,input_text,re.IGNORECASE)
if matchobject:
input_text=re.sub(input_regex,subst_regex,input_text,re.IGNORECASE)

我期望将 input_text 更改为

'Cooper S Hardtop 2 Door'

当我完成时,但它并没有改变,即使我已经确认 Matchobject 确实是从 re.search 创建的。如果对 input_text 上的 input_regex 执行 re.search 是成功的,为什么 re.sub 找不到相同的匹配并进行替换?

最佳答案

始终使用原始字符串作为正则表达式模式。 re.sub 的第 4 个参数不是标志。因此,请确保在调用 re.sub

时指定了 flags=re.IGNORECASE
>>> input_regex = r'Cooper S \(3doors\)'
>>> re.search(input_regex,input_text,re.IGNORECASE)
<re.Match object; span=(0, 17), match='cooper s (3doors)'>
>>> re.sub(input_regex,subst_regex,input_text, flags=re.IGNORECASE)
'Cooper S Hardtop 2 Door'

关于python re.sub 与 re.search 行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51749957/

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