0

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

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

我应该这样结束:

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

我怎样才能只匹配括号内的文本,然后替换它们?谢谢!

4

3 回答 3

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'

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

于 2013-05-08T22:13:15.963 回答
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'
于 2013-05-08T22:14:20.233 回答
0
"\([^)]+\)"

将匹配括号中的任何内容,所以你可以这样做

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

在红宝石中。

编辑:修复格式,使转义不会丢失...

于 2013-05-08T22:15:00.340 回答