正则表达式 - 如果字符串不包含括号内的特定单词,则删除括号及其内容

时间:2017-11-15 02:49:30

标签: python regex

使用Regex,我想删除括号内的一些单词,除非包含某些单词。

目标词是:

hoho
haha

所以我想改变这个字符串:

"Nice (foo line) (haha great) (bar) (hoho how)"

"Nice (haha great) (hoho how)"

我尝试了question的一些表达,但我找不到任何答案。我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果您不反对使用除了正则表达式之外的某些python,您可以拆分单词组,然后搜索每个组以查找要保留的模式。最后,将保留的组合在一起成为一个字符串。

import re

s = "Nice (foo line) (haha great) (bar) (hoho how)"

' '.join(x.group() for x in re.finditer(r'\([\w\s]+\)|\b\w+\b',s)
         if re.search(r'^[\w\s]+$|hoho|haha', x.group()))
# returns:
'Nice (haha great) (hoho how)'