JAVA正则表达式中的逻辑运算符

我想要实现一个功能,如下

"aaaaa123baaasdgaa32a2dfgaaaa"
* 取出字符串中连续的5个、1个、3个a的字符串
* 最后输出
* aaaaa
* aaa
* a

我自己用了如下正则

 1 String regex = "a{5}||a{3}||a{1}";
 2         /*    上面这个正则输出下面
 3          *     aaaaa
 4             aaa
 5             a
 6             a
 7             a
 8             aaa
 9             a
10             不符合要求
11          */
12         
13 String str = "aaaaa123baaasdgaa32a2dfgaaaa";
14         
15 Matcher m = Pattern.compile(regex).matcher(str);
16         
17 while(m.find())
18     System.out.println(m.group());

我知道输出结果错误的原因是因为字符串中的aaaa是连续4个a,符合正则表达式或运算的最后一个表达式:a{1}。但是我现在想要实现的就只是输出连续5个、3个和一个a。请各位大神指教,并想知道关于正则表达式中的逻辑运算符方面的心得。帮助文档中的没有介绍啊!如果问的不够详细也请回复。谢谢

 

陪伴而非守候
浏览 505回答 1
1回答

子衿沉夜

(?<!a)(a{5}|a{3}|a)(?!a)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java