小能豆

匹配字符后跟/前面是相同字符但大写/小写的 Python RegEx

py

我正在尝试构建一个正则表达式,它可以找到: aA、Aa、bB、cC, 但不适合:aB、aa、AA、aC、Ca。

-如果我们遇到小写字母,我们要检查下一个/上一个字母是否为大写 -如果我们遇到大写字母,我们要检查下一个/上一个字母是否为小写 -我们的正则表达式不应该找到大写/小写字母

我希望任何字符后面/前面都有相同的字符,但大写。


阅读 25

收藏
2024-11-05

共1个答案

小能豆

为了构建一个正则表达式以匹配您的条件,您可以使用以下模式:

(?<![a-z])[a-z](?=[A-Z])|(?<=[A-Z])[A-Z](?<![a-z])

正则表达式解释:

  • (?<![a-z]): 确保当前字符前面没有小写字母(负向前瞻)。
  • [a-z]: 匹配一个小写字母。
  • (?=[A-Z]): 确保当前字符后面是一个大写字母(正向后瞻)。
  • |: 或运算符,允许匹配不同的模式。
  • (?<=[A-Z]): 确保当前字符前面是一个大写字母(正向回顾)。
  • [A-Z]: 匹配一个大写字母。
  • (?<![a-z]): 确保当前字符后面没有小写字母(负向前瞻)。

示例代码:

您可以在 Python 中使用这个正则表达式,示例如下:

import re

# 正则表达式模式
pattern = r'(?<![a-z])[a-z](?=[A-Z])|(?<=[A-Z])[A-Z](?<![a-z])'

# 测试字符串
test_strings = ['aA', 'Aa', 'bB', 'cC', 'aB', 'aa', 'AA', 'aC', 'Ca']

# 匹配
matches = {s: bool(re.search(pattern, s)) for s in test_strings}

print(matches)

输出结果:

当您运行上述代码时,您将获得以下结果:

{
    'aA': True,
    'Aa': True,
    'bB': True,
    'cC': True,
    'aB': False,
    'aa': False,
    'AA': False,
    'aC': False,
    'Ca': False
}

总结:

  • 正则表达式检查当前字符的前后上下文,以确保它符合大小写条件。
  • 这样您可以找到符合条件的字母组合,而忽略不符合条件的组合。
2024-11-05