gpt4 book ai didi

python - 正则表达式 - 如何匹配特定长度的一组唯一字符

转载 作者:太空狗 更新时间:2023-10-30 02:46:36 26 4
gpt4 key购买 nike

我正在寻找一个正则表达式,只有当所有字符都是唯一的时,它才会匹配特定长度的临时字符组。

对于给定的字符串示例:

123132213231312321112122121111222333211221331

123, 132, 213, 231, 312, 321 被匹配并且112、122、121、111、313、322、221、323、131 等不匹配。

我尝试了 (?:([0-9])(?!.{3}\1)){3} 但这是完全错误的

最佳答案

遍历输入字符串,每次迭代都找到这个表达式的匹配项,截断并包括前一个匹配项的第一个字符,直到没有匹配项:

((\d)((?!\2)\d)((?!\2)(?!\3)\d))

您可以执行 findAll,但这样您就不会检测到重叠的匹配项,例如“12321”。您只会找到第一个:“123”

当然,这只适用于数字。如果你也想匹配单词字符,你可以这样做:

((\w)((?!\2)\w)((?!\2)(?!\3)\w))

如果你想要更长的长度,只需遵循构建正则表达式时的模式:

((\w)((?!\2)\w)((?!\2)(?!\3)\w)((?!\2)(?!\3)(?!\4)\w))

所以,我只是希望 Python 正确的代码...:

max=<your arbitrary length>
regex = "((\\w)"
for i in range(1, max-1):
regex += "("
for j in range(2, i+1):
regex +="(?!\\"+j+")"
regex += "\\w)"
regex = ")"

关于python - 正则表达式 - 如何匹配特定长度的一组唯一字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19595110/

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