我想要实现一个功能,如下
"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。请各位大神指教,并想知道关于正则表达式中的逻辑运算符方面的心得。帮助文档中的没有介绍啊!如果问的不够详细也请回复。谢谢
(?<!a)(a{5}|a{3}|a)(?!a)
运用了正则的特殊构造模式,匹配字串前面不是a,后面也不是a。厉害啊!!感谢指教!!