如何使用正则表达式在字符串中查找一个字母及其相反的大小写?

Chr*_*ude 3 python regex

如何使用正则表达式在字符串中匹配所有出现的“大写和小写”,反之亦然?例如:“aADFfGcCgs”,我想匹配 aA、Ff 和 cC 我正在执行以下操作re.findall('[a-Z][A-Z]', string),它只能匹配两个字符,这些字符不一定是另一个字母的相反大小写。

Wik*_*żew 6

您可以使用

print( [x.group() for x in re.finditer(r'([a-zA-Z])(?!\1)(?i:\1)', 'aADFfGcCgs')] )
# => ['aA', 'Ff', 'cC']
Run Code Online (Sandbox Code Playgroud)

re.findall

[x for x,y in re.findall(r'(([a-zA-Z])(?!\2)(?i:\2))', 'aADFfGcCgs')]
Run Code Online (Sandbox Code Playgroud)

请参阅Python 演示

细节

  • ([a-zA-Z]) - 捕获组 1:一个 ASCII 字母
  • (?!\1) - 下一个字符不应等于第 1 组中捕获的字母
  • (?i:\1) - 与 Group 1 中捕获的字符相同,但模式可以不区分大小写的方式匹配。