[英]python replace pattern with regex
我有这个字符串。
a='SAD; Happy; ING:train coca'
OR
a='SAD; Happy; ING(train coca'
OR
a='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'
非常欢迎您的帮助谢谢您的帮助
这可以完成工作:
import re
strs = [
'SAD; Happy; ING:train coca',
'SAD; Happy; ING(train coca',
'SAD, Happy, ING[train coca',
]
for str in strs:
x = re.sub(r'(?<=[;,])\s+[A-Z]+[:([]', ' ', str)
print x
Output:
SAD; Happy; train coca
SAD; Happy; train coca
SAD, Happy, train coca
您不需要使用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
"""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.