用于删除括号中数据的正则表达式

Den*_*ian 6 python regex python-2.7

我正在尝试删除下面这些字符串的括号区域,但我无法正常工作:(

数据:

x (LOC)
ds ds (32C)
d'ds ds (LeC)
ds-d da(LOQ)
12345 (deC)
Run Code Online (Sandbox Code Playgroud)

正则表达式尝试:

[ \(\w+\)]
Run Code Online (Sandbox Code Playgroud)

Regex101:

http://regex101.com/r/bD8fE2

示例代码

items = ["x (LOC)", "ds ds (32C)", "d'ds ds (LeC)", "ds-d da(LOQ)", "12345 (deC)"]
for item in items:
    item = re.sub(r"[ \(\w+\)]", "", item)
    print item
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 8

取下方括号; 你没有匹配一个字符类:

item = re.sub(r" \(\w+\)", "", item)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> items = ["x (LOC)", "ds ds (32C)", "d'ds ds (LeC)", "ds-d da(LOQ)", "12345 (deC)"]
>>> for item in items:
...     print re.sub(r" \(\w+\)", "", item)
... 
x
ds ds
d'ds ds
ds-d da(LOQ)
12345
Run Code Online (Sandbox Code Playgroud)

一个但最后一个示例在左括号(()之前没有空格,因此不匹配.如果您需要该模式也可以使空间可选:

item = re.sub(r" ?\(\w+\)", "", item)
Run Code Online (Sandbox Code Playgroud)

也许匹配任何不是右括号的东西也适合你:

item = re.sub(r" ?\([^)]+\)", "", item)
Run Code Online (Sandbox Code Playgroud)

这与更多的字符匹配\w.

在正则表达式中,方括号[...]表示一个字符类; 一组匹配一次的字符.该类[ \(w+\)]意味着:匹配一个字符,如果它匹配包括空格,左括号,\w类的所有字符,+加号或右括号的集合.


Jer*_*rry 5

无论您拥有角色的顺序如何,都会使用方括号内的任何内容 [ ... ]是一个字符类.完全删除它们:

r" \(\w+\)"
Run Code Online (Sandbox Code Playgroud)

我会添加一个?可选空间:

r" ?\(\w+\)"
Run Code Online (Sandbox Code Playgroud)

regex101演示