gpt4 book ai didi

python-3.x - 避免重复连续字符的正则表达式,但不包括一个特定字符

转载 作者:行者123 更新时间:2023-12-05 03:22:01 25 4
gpt4 key购买 nike

我正在用 Python 学习很多正则表达式,我正在努力使用正则表达式来允许没有连续 4 个或更多重复字符的测试用例,我在 Internet 上找到了简单的解决方案,但我需要评估重复字符排除“-”字符,例如:

bic-hota  // Valid
bichota // Valid
bichota1234 // Valid
bich222ota // Valid, sequence "222" with length of 3 is allowed

bichota2222 // Invalid because have "2222" and isn't allowed length of 4 or more
bichota22-22 // Invalid because have "2222" (ignore the '-') and isn't allowed length of 4 or more

在最后一个测试用例中,你可以看到序列“22-22”,我需要忽略序列之间的“-”来验证整个序列,我已经搜索了如何解决这个问题,我已经使用了非捕获组 (?:-?) 但这不起作用:(

^(?![\w]*([\w])(?:-?)\1{3,})[\w-]+$

我的正则表达式有什么问题以及如何修复它?

测试用例:https://regexr.com/6p0ca

最佳答案

你可以使用这个正则表达式:

^(?!.*(\w)(?:-?\1){3}).+

RegEx Demo

正则表达式详细信息:

  • ^:开始
  • (?!: 开始否定前瞻
    • .*:匹配任意长度的字符
    • (\w):匹配一个字符并在第 1 组中捕获
    • (?:-?\1){3}:匹配可选的 - 后跟对第 1 组的反向引用。重复此组 3 次。
  • ):结束负前瞻
  • .+:匹配1+个任意字符

只允许单词字符和连字符使用:

^(?![\w-]*(\w)(?:-?\1){3})[\w-]+$

关于python-3.x - 避免重复连续字符的正则表达式,但不包括一个特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72848365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com