假设我有一个文件,例如:
tata toto
tata titi
tata
如果我要制作如下正则表达式:
^(tata) (toto)?
我希望如果找到toto \ 2 = toto,否则为\ 2 = foo
所以我想要输出:
tata toto
tata foo
tata foo
使用正则表达式可以吗?
答案 0 :(得分:1)
一种解决方法是用tata
替换toto
后跟tata foo
以外的任何内容:
import re;
string = '''
tata toto
tata titi
tata
'''
print (re.sub('^tata(?! toto$).*$', 'tata foo', string, 0, re.M))
输出:
tata toto
tata foo
tata foo
答案 1 :(得分:0)
您可以使用re.findall
并循环执行您喜欢的任何事情:
import re
string = '''
tata toto
tata titi
tata
'''
expression = r'^(tata) ?(toto)?'
output = ''
for pair in re.findall(expression, string, re.M):
if pair[1] == '':
output += pair[0] + ' foo\n'
else:
output += pair[0] + ' ' + pair[1] + '\n'
print(output)
tata toto
tata foo
tata foo
如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。