我有这个字符串
str = "Hello (m)y name (?) is (donal)d (!) "
并期望以下输出:
"Hello my name (?) is donald (!) "
我尝试过
r = re.sub(r'([()+])', '', str)
但这会删除所有括号。我想念什么?
答案 0 :(得分:1)
从技术上讲,这将获得您在本示例中想要的结果...
valueChanges: Subscription;
...但是我怀疑它是否适用于所有情况。鉴于您没有显示要完成的任务,因此无法确定。
这是什么:
括号是import re
re.sub(
r"\((\w+)\)",
r"\1",
"Hello (m)y name (?) is (donal)d (!) ",
)
中的特殊字符,因此在方括号之外匹配它们意味着转义它们:re
,\(
。但是,您希望保留它们之间的内容,因此您要在它们之间的字符周围使用普通的(未转义的)parens。假设它只是您要保存的“单词字符”;您可能需要的不仅仅是这里的\)
。
加号表示您将匹配一个或多个单词字符。
\w
中的 \1
表示当第一个参数regex匹配时,该字符串的那一部分将被第一组parens之间的匹配部分替换。我们这里只有一个。
Python re
module documentation更详细地解释了所有这些内容。