首页 > 解决方案 > 在 python 正则表达式中转义括号

问题描述

我正在通过对其应用一系列转换来修改字符串数组。其中一种转换是将括号中的国家名称与该国家的全名交换。例如:

Foo (GB) -> Foo 英国

我有一个形式的转换对象数组:

conversion.input_str = '(GB)'
conversion.output_str = 'Great Britain'

我正在尝试使用正则表达式来做到这一点,如下所示:

for conv in conversions:
   match_expr = re.compile(rf'(\s|\b){conv.input_str}(\s|\b)')
   converted_str = re.sub(match_expr, conv.output_str, str_to_convert)

\s 和 \b 用于防止与单词内部字符串匹配。我所有的转换都有效,除了括号之一。

如果我使用 plain conv.input_str,我会得到 Foo () 的输出

如果我尝试使用re.escape(conv.input_str)它进行转义似乎会创建正确的 match_expr 但会给我 Foo(GB)。

我究竟做错了什么?

标签: pythonregex

解决方案


推荐阅读