我有这个字符串。a='SAD; Happy; ING:train coca'ORa='SAD; Happy; ING(train coca'ORa='SAD, Happy, ING[train coca'我需要检测这个字符串:“; ING:”为此我使用了这个正则表达式:listRE=re.findall(r';\s*[A-Z]+\s*[\:|\[|\(]\s*[A-Z]+', a)我需要做的是删除介于两者之间的内容;和 :(并不总是 ; : 如正则表达式所示)我这样做for i in listRE: p=re.compile(i) a=re.sub(p, r'', a)但它正在删除我的文字!我的目标是:a='SAD; Happy; train coca'非常欢迎您的帮助 谢谢您的帮助
3 回答
RISEBY
TA贡献1856条经验 获得超5个赞
您不需要使用findall——您可以直接使用匹配您需要的所有情况的正则表达式模式。我还修复了一些你的正则表达式:
import re
a = 'SAD; Happy; ING:train coca'
b = "SAD; Happy; ING(train coca"
c = "SAD, Happy, ING[train coca"
print(re.sub(r'(?<=;|,)(\s*)[^:[(;,]*[:[(]', r'\1', a))
print(re.sub(r"(?<=;|,)(\s*)[^:[(;,]*[:[(]", r"\1", b))
print(re.sub(r"(?<=;|,)(\s*)[^:[(;,]*[:[(]", r"\1", c))
"""
output:
SAD; Happy; train coca
SAD; Happy; train coca
SAD, Happy, train coca
"""
添加回答
举报
0/150
提交
取消