如何使用re.sub()替换括号内的文本

时间:2013-05-08 22:10:10

标签: python regex

例如,我有一个这样的字符串:

'(1) item 1. \n(2) item 2'

我应该最终得到这个:

'(x) item 1. \n(x) item 2'

我怎样才能匹配括号内的文字,并替换它们?谢谢!

3 个答案:

答案 0 :(得分:1)

转义括号:

In [1]: import re

In [2]: s = '(1) item 1. \n(2) item 2'

In [3]: re.sub(r'\(\d+\)', '(x)', s)
Out[3]: '(x) item 1. \n(x) item 2'

你需要转义它们,因为它们在正则表达式上下文中具有特殊含义(创建一个编号组)。

答案 1 :(得分:0)

In [3]: import re
In [4]: re.sub("\([^)]*","(x",'(1) item 1. \n(2) item 2')
Out[4]: '(x) item 1. \n(x) item 2'

答案 2 :(得分:0)

"\([^)]+\)"

将匹配括号中的任何内容,因此您可以

"(1) item 1. \n(2) item 2".gsub(/\([^)]+\)/, "(x)")

在红宝石中。

修改:修复格式设置,以便不会丢失转义...