Numero de telefone dentro de string utilizando Regex

Estou utilizando esse codigo para achar padroes de numero de telefone dentro de uma string e retornar esse numero. O codigo funciona beleza se a string possui somente o numero mas se adiciono mais coisas a string o codigo pára de funcionar, como no exemplo abaixo. O que estou fazendo de errado?

	public static void main (String args[]) throws Exception {
		Collection<Pattern> padroesTelefone = new ArrayList<Pattern>();
		
		padroesTelefone.add(Pattern.compile("^(\\(\\d{2,3}\\)|\\d{2,3})([-\\s]?\\d{4}){2}$"));
		padroesTelefone.add(Pattern.compile("/\\(?\\d{3}\\)?\\d{3}-\\d{4}/"));
		padroesTelefone.add(Pattern.compile("\\d{3}-\\d{3}-\\d{4}"));
		padroesTelefone.add(Pattern.compile("\\(\\d{3}\\)\\s?\\d{3}-\\d{4}"));
		padroesTelefone.add(Pattern.compile("^\\(?\\d{3}\\)?\\d{4}-\\d{4}$"));
		padroesTelefone.add(Pattern.compile("^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$"));
		padroesTelefone.add(Pattern.compile("^\\(?(\\d{3})\\)?[- ]?(\\d{4})[- ]?(\\d{4})$"));
		padroesTelefone.add(Pattern.compile("^\\(?(\\d{2})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$"));
		padroesTelefone.add(Pattern.compile("^\\(?(\\d{2})\\)?[- ]?(\\d{4})[- ]?(\\d{4})$"));
		padroesTelefone.add(Pattern.compile("'/^(\\(?[0-9]{3}\\)?|[- ]? )[ ][0-9]{3}[-. ]?[0-9]{4}$/"));
		padroesTelefone.add(Pattern.compile("'/^(\\(?[0-9]{2}\\)?|[- ]? )[ ][0-9]{3}[-. ]?[0-9]{4}$/"));
		padroesTelefone.add(Pattern.compile("'/^(\\(?[0-9]{2}\\)?|[- ]? )[ ][0-9]{4}[-. ]?[0-9]{4}$/"));
		padroesTelefone.add(Pattern.compile("'/^(\\(?[0-9]{3}\\)?|[- ]? )[ ][0-9]{4}[-. ]?[0-9]{4}$/"));
		
		Matcher pesquisa;
		String complemento = "Rua Praia de Jaguaribe quadra 12 lote 18 (71)3373-5059";
		
		Iterator<Pattern> i = padroesTelefone.iterator();
		
		while (i.hasNext()){
			Pattern padrao = (Pattern)i.next();
			pesquisa = padrao.matcher(complemento);
			while (pesquisa.find()){
				System.out.println(pesquisa.group());
			}

		}
	}
}

Tire o ^ do começo das ER e o $ do final. O primeiro por exemplo ("^(\(\d{2,3}\)|\d{2,3})([-\s]?\d{4}){2}$") ficaria assim: “(\(\d{2,3}\)|\d{2,3})([-\s]?\d{4}){2}”.

vlw… era isso mesm :wink: