gpt4 book ai didi

java - 正则表达式三个字母以逗号分隔且无重复字母

转载 作者:行者123 更新时间:2023-11-30 06:50:56 24 4
gpt4 key购买 nike

我卡在正则表达式中,需要创建正则表达式

  1. 最多可以有三个给定的字母
  2. 三个字母之间用逗号隔开
  3. 如果是单字母就没有逗号
  4. 逗号不算数
  5. 字母不应重复

例子:三个字母将是 S,E,C

正则表达式应该匹配:

S
S,E
S,C
S,E,C
E,C
C

不应该匹配:

S,S
S,E,E,C
S,E,C,C
S,E,C,S
S,E,C,E,S

我试过这个正则表达式:

^[SEC]{1,3}$

但我不知道如何排除重复字母以及如何包含逗号而不计算逗号

谢谢

最佳答案

character class [SCE] 将匹配 SCE

然后,要匹配零个、一个或两个逗号序列和 3 个允许字符之一,您需要 grouping construct : (,[SCE]){0,2} 或使用非捕获分组构造 (?:,[SCE]){0,2}

要确保没有重复字符,请使用 negative lookahead一旦找到相同的字符,锚定在匹配失败的开头 - ^(?!.*([SCE]).*\1) - 其中 ([SEC]) 是第 1 组,\1backreference引用该组中捕获的值(SEC)

使用

^(?!.*([SCE]).*\1)[SCE](?:,[SCE]){0,2}$ 

参见 regex demo

关于java - 正则表达式三个字母以逗号分隔且无重复字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40763040/

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