Python正则表达式从字符串中删除双字符

2024-05-23 18:48:06 发布

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

我试图从一个字符串中删除所有非字符和跟在同一个字符后面的所有字符。在

示例输入“abbbbccccd EF ZZZU”应该变成 “ABCDDEFZU”。尝试在filter2函数中捕获 两个字母对,这样我可以比较这两个字母。 但我只匹配真正匹配的字母,不匹配后面的字母。在

#!/usr/bin/python
# coding: latin-1

import re
testfield = 'ABBBbbcCCCD EF  ZZZU'
def filter1(matchobj):
  return ''
def filter2(matchobj):
  print('MATCH:' + matchobj.group(0))
  return matchobj.group(0)

print(testfield)

testfield2 = re.sub('[^A-Z0-9]', filter1, testfield, flags=re.IGNORECASE)
print(testfield2)

testfield2 = re.sub('[A-Z0-9](?=[A-Z0-9])', filter2, testfield2, flags=re.IGNORECASE)

如何将两个字母都传递给filter2函数,但仍然找到所有可能的匹配项? 打印(测试字段2)


Tags: 函数rereturndef字母字符printef
1条回答
网友
1楼 · 发布于 2024-05-23 18:48:06

你应该原始你的正则表达式模式。第二步(假设您的意思是ABCDEFZU作为最终结果),使用backreferences和lambda函数返回匹配部分的大写字母,您可以执行以下操作:

testfield2 = re.sub(r'([A-Z0-9])\1+', lambda m: m.group(1).upper(), testfield2, flags=re.IGNORECASE)
print(testfield2)

ideone demo

相关问题 更多 >