我有一大堆字符串,我需要根据一些规则进行编辑。其中一条规则是字符串不应包含带括号的块。例如 -
"(Speaking) (Laughing) Get out of here" # Desired output - "Get out of here"
或
"(Dancing)Where have you been" # Desired output - "Where have you been"
请帮我这样做。
答案 0 :(得分:1)
一个可能有趣的替代方案是简单的状态机。它也应该非常高效。
c = """(Speaking) (Laughing) Get out of here"""
paren_count = 0
out = []
for char in c:
if char == "(":
paren_count += 1
continue
elif char == ")":
paren_count -= 1
continue
if paren_count == 0:
out.append(char)
print "".join(out).strip()
答案 1 :(得分:0)
(?![^()]*\))(?!\s[^a-zA-Z])([a-zA-Z ]+)
您可以使用此正则表达式执行您想要的操作。
参见演示。
http://regex101.com/r/hQ1rP0/12
像
一样使用它import re
x="(Speaking) (Laughing) Get out of here"
print re.findall(r"(?![^()]*\))([a-zA-Z ]+)",x)