将同一个字符与正则表达式进行精确匹配

2024-09-22 20:29:28 发布

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

我尝试使用pythonre来查找重复特定次数的同一个字母或数字的集合。(.)在识别将要重复的内容方面工作得很好,但我无法找到如何防止它重复不同的字符。以下是我所拥有的:

re.search(r'(.){n}', str)

例如,如果n = 4,那么它将匹配9999中的99997,但如果n = 3,则不匹配。
谢谢


Tags: re内容search字母数字字符次数str
1条回答
网友
1楼 · 发布于 2024-09-22 20:29:28

怎么样

(?:^|(?<=(.)))(?!\1)(.)\2{n-1}(?!\2)

这将:

  • (?:^|(?<=(.))):确保:
    • ^:要么我们在字符串的开头
    • (?<=(.)):要么我们不在字符串的开头;然后,在匹配之前捕获字符并将其保存到\1
  • (?!\1)(.):匹配任何不是\1的字符并将其保存到\2
  • \2{n-1}:匹配\2n-1次
  • (?!\2):确保\2无法匹配

n-1只是象征性的;很明显,您希望用实际的n-1值来替换它,而不是用8-1或其他东西代替)。在

重要编辑:以前版本的regex((.)\1{n-1}(?!\1))无法工作,因为它无法解释匹配后面的字符匹配\1。上面的regex解决了这个问题。在

相关问题 更多 >