【问题标题】:Replace all characters between two characters in python替换python中两个字符之间的所有字符
【发布时间】:2023-03-14 02:30:02
【问题描述】:

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

这将是我的输入字符串:

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

我正在尝试得到这个输出:

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

【问题讨论】:

  • (?:^|(?&lt;=&lt;))K+(?=&lt;|$) 假设 \n 不是文字字符。
  • 您好,感谢您的回复,但这不会删除 \n 之前的 K
  • 如前所述,不知道\n是不是字面字符?是文字还是换行符?
  • 对不起,上面没有提到,这是一个换行符。

标签: regex python-3.x string


【解决方案1】:

这个正则表达式应该会给你你想要的结果。它查找前面有Kc&lt;Kc,后面是Kc&lt; 或行尾:

(?<=[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

Demo on rextester

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多