例如我有一个这样的字符串:
'(1) item 1. \n(2) item 2'
我应该这样结束:
'(x) item 1. \n(x) item 2'
我怎样才能只匹配括号内的文本,然后替换它们?谢谢!
只需转义括号:
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'
您需要转义它们,因为它们在正则表达式上下文中具有特殊含义(创建一个编号组)。
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'
"\([^)]+\)"
将匹配括号中的任何内容,所以你可以这样做
"(1) item 1. \n(2) item 2".gsub(/\([^)]+\)/, "(x)")
在红宝石中。
编辑:修复格式,使转义不会丢失...