如何删除除带有正则表达式的某些字符后的字符串?

时间:2019-05-28 09:47:16

标签: python regex

如果ab之后没有abx,我想从字符串中删除y

例如,如果字符串为123ab456,则结果应为123456

如果字符串为123abx456,则结果应为123abx456

我该如何使用正则表达式呢?

1 个答案:

答案 0 :(得分:3)

这是使用re.sub且前瞻性为否的方法:

re.sub(r'ab(?![xy])', '', s)

s = '123ab456'
re.sub(r'ab(?![xy])', '', s)
# '123456'

s = '123abx456'
re.sub(r'ab(?![xy])', '', s)
# '123abx456'

详细信息

  • ab(?![xy])
    • ab从字面上匹配字符ab(区分大小写)
    • 负前瞻(?![xy])
      • 匹配列表[xy]中出现的单个字符
      • xy与列表xy中的单个字符匹配(区分大小写)