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