如果ab后面没有xy,我想从string中删除ab

例如,如果string123ab456,则结果为123456

如果string123abx456,则结果为123abx456

如何使用正则表达式来做到这一点?

分析解答

这是一种使用带有负前瞻的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]) <UL> <li> ab匹配字符ab字面(区分大小写)
  • 否定前瞻(?![xy]) <UL> <li>匹配list [xy]中的单个字符
  • xy与list xy中的单个字符匹配(区分大小写)