输入placemark或if与foo字符串不匹配

2024-04-27 19:50:46 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这样一个文件:

tata toto
tata titi
tata

如果我在做一个正则表达式,比如: ^(tata) (toto)?

如果找到toto,我希望是\2=toto,否则是\2=foo

所以我想在输出中:

tata toto
tata foo
tata foo

正则表达式可以吗


Tags: 文件footititototata
2条回答

一种方法是用tata foo替换任何非tata后跟toto的内容:

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

您可以使用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中查看它如何与一些示例输入匹配


相关问题 更多 >