/* Expressões regulares com Java Patterns
   http://pt.stackoverflow.com/q/186142/53463 */

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		final String regex = "^[^ab]*+(?=(?:[^b]*b){2})(?:[^a]*a){2}[^a]*$";
		
		String[] exemplos = new String[] { 
			"---aabb+++","---bbaa+++","---abab+++","---baba+++",
			"---babba++","---bbbbbaa","ababbb++++","ccabcab+++",
			"----bcdbaa","-ababd++++","bbbaabbbbb","bbbabbbbbb",
			"bbbaaabbbb","baaaaaaaaa","abbbbbbbbb","ccacbcacbc"
		};
		
		
		final Pattern pattern = Pattern.compile(regex);
		
		for (String palavra : exemplos) {
			Matcher matcher = pattern.matcher(palavra);
			
			if (matcher.find()) {
			    System.out.println(palavra + " ✔️");
			} else {
			    System.out.println(palavra + " ✖️️");
			}
		}
	}
}