Skip to main content
 首页 » 编程设计

python之回文的正则表达式

2025年05月04日23kenshinobiy

我正在寻找一种特殊的回文。规则是

  1. 长度为5;
  2. 前两个字符,一个为大写字母,一个为数字;
  3. 第三个字符是小写字母。

对我来说主要的困难是组引用的未确定位置。 如果我写 '(((([A-Z])([0-9]))|(([0-9])([A-Z])))[a-z]\5\4)',只有K2i2K会被匹配,2KiK2不会被匹配。要匹配 2KiK2,我必须编写 '(((([A-Z])([0-9]))|(([0-9])([A-Z])) )[a-z]\8\7)'.

那么正则表达式应该怎么写呢?谢谢。

请您参考如下方法:

\b(?=.{5})(?=(?:[A-Z]\d|\d[A-Z]))(.)(.)[a-z]\2\1\b 

这断言(正向前瞻)有 5 个字符,并且前两个字符是大写数字或数字大写对。

一旦我们确定了这一点,剩下的就微不足道了。我们捕获前两个字符,检查小写字母,然后以相反的顺序匹配前两个捕获。

我还用单词边界 (\b) 包围了正则表达式,以确保它不会在单词中间匹配。

查看 Regex101并附有详细说明。