仅从字符串中删除括号,而不删除它们之间的字符,但忽略某些括号

时间:2018-09-27 03:31:53

标签: python regex python-3.x

我有这个字符串

str = "Hello (m)y name (?) is (donal)d (!) "

并期望以下输出:

"Hello my name (?) is donald (!) "

我尝试过

r = re.sub(r'([()+])', '', str)

但这会删除所有括号。我想念什么?

1 个答案:

答案 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更详细地解释了所有这些内容。