【发布时间】:2016-11-21 19:58:05
【问题描述】:
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]+ 以便匹配只会发生一次。 aac 和 aa 不应打印,因为 aa 匹配了两次。
我可以这样做吗?
【问题讨论】:
-
你在现实生活场景中只有 3 个单字符吗?如果是,并且上面的示例是真正需要的一个非常简化的示例,那么正则表达式不是此任务的最佳工具。
-
除非人为要求使用正则表达式,否则我会说你最好通过创建一个迭代字符串中的字符并将它们放入 @ 987654328@,如果检测到重复则失败(如果Set.add 返回 false)。
-
我认为您的问题类似于:stackoverflow.com/questions/12870489/…
-
“aca”呢?
-
不是所有可以用正则表达式完成的事情。