首页 > 解决方案 > 替换python中两个字符之间的所有字符

问题描述

我正在尝试替换两个字符之间的所有字符。

这将是我的输入字符串:

P<HRVSPECIMEN<<SPECIMENC<<<<<<<K<K<K<K<KKKKKK\n10070070071HRVB212258F1407019<<<<<c<c<<<<<<06

我试图得到这个输出:

P<HRVSPECIMEN<<SPECIMENC<<<<<<<<<<<<<<<<<<<<<\n10070070071HRVB212258F1407019<<<<<<<<<<<<<<06

标签: regexpython-3.xstring

解决方案


这个正则表达式应该给你你想要的结果。它查找前面有 a 、Kor并且后面有 a 、or或行尾的 or :cKc<Kc<

(?<=[Kc<])[Kc](?=[Kc<]|$)

您可以将其与re.MULTILINE标志一起使用re.sub

import re
s = '''P<HRVSPECIMEN<<SPECIMENC<<<<<<<K<K<K<K<KKKKKK
10070070071HRVB212258F1407019<<<<<c<c<<<<<<06'''
s = re.sub(r'(?<=[Kc<])[Kc](?=[Kc<]|$)', '<', s, 0, re.MULTILINE)
print(s)

输出:

P<HRVSPECIMEN<<SPECIMENC<<<<<<<<<<<<<<<<<<<<<
10070070071HRVB212258F1407019<<<<<<<<<<<<<<06

如果\n您的字符串中的 是文字\n而不是换行符,只需$在正则表达式中替换为\\n

s = r'P<HRVSPECIMEN<<SPECIMENC<<<<<<<K<K<K<K<KKKKKK\n10070070071HRVB212258F1407019<<<<<c<c<<<<<<06'
s = re.sub(r'(?<=[Kc<])[Kc](?=[Kc<]|\\n)', '<', s, 0)
print(s)

输出:

P<HRVSPECIMEN<<SPECIMENC<<<<<<<<<<<<<<<<<<<<<\n10070070071HRVB212258F1407019<<<<<<<<<<<<<<06

rextester 上的演示


推荐阅读