gpt4 book ai didi

正则表达式检查重复

转载 作者:行者123 更新时间:2023-12-01 07:35:41 24 4
gpt4 key购买 nike

我需要检查一个必须匹配的字符串:

1、2、3、4、5、6、7

所以规则是:1到7之间只​​有一个数字,一个逗号分隔符,但我不想重复,所以写是不合法的:

1,2,3,1,5

目前我正在使用:

([1-7]{1},){1,6}([1-7]{1})

如何修改它以检查重复?

最佳答案

您可以使用 \1指以前匹配的组(在这种情况下是第一组)。使用它来查找有重复的字符串。

正则表达式可能如下所示:.*\b(\d+)\b.*\b\1\b

  • .*任何事情
  • \b(\d+)\b单词分隔符之间的数量(第 1 组)
  • .*更多的东西
  • \b\1\b在单词分隔符之间再次组 1

  • Python 中的示例:
    >>> p = r".*\b(\d+)\b.*\b\1\b"
    >>> re.match(p, "1,2,3,4,5,6,7")
    None
    >>> re.match(p, "1,2,3,1,5")
    <_sre.SRE_Match object at 0x8d2c2a0>

    但是,这不会检查那些逗号分隔符,因此您必须分两步执行此操作:首先检查总体布局,然后过滤掉重复的那些。

    但是请注意,这样做的性能可能不会很好:它必须尝试第一组的每个数字,然后匹配字符串以查看是否还有另一组与第一组相同,然后回溯并重试,给出这个 O(n²) 复杂度。相反,我建议只使用一组已经看到的数字和一个循环。

    关于正则表达式检查重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33878241/

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