gpt4 book ai didi

java - 使 Java 正则表达式 '[abc]+' 每个字母匹配一次

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:12 26 4
gpt4 key购买 nike

String[] words = {"a","ab","ac","abc","aac","aa"};
for(String str:words) {
if(str.matches("[abc]+")) {
System.out.println(str);
}
}

这段代码打印出来

a,ab,ac,abc,aac,aa

这几乎是我想要的,除了我不希望一个字母被匹配两次。我想更改正则表达式 [abc]+ 以便匹配只会发生一次。 aacaa 不应打印,因为 aa 匹配了两次。我可以这样做吗?

最佳答案

使用否定前瞻,您可以使用此正则表达式:

^(?:([abc])(?!.*\1))+$

RegEx Demo

如果你想允许任何字符而不仅仅是 [abc] 然后使用:

^(?:(.)(?!.*\1))+$
  • (.) 匹配和分组任何字符
  • (?!.*\1) 是否定前瞻,它针对捕获的每个字符断言当前位置之前不存在相同的字符。
  • (?:...)+ 在非捕获组中将匹配字符和先行分组,重复 1 次或多次以匹配整个字符串。

关于java - 使 Java 正则表达式 '[abc]+' 每个字母匹配一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40728315/

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