2010-12-27 2 views
2

나는 문자열 +6014456는 " +"정규식 캔트 일식 자바

같은 일치합니다 "\++?"입니다 확인해야하지만이 오류 메시지가 invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\)받을 .... 왜?

+0

당신의'.matches()'콜을 – wizztjh

+0

에 올리면됩니다. 당신의 실제 주장이 무엇인지는 분명하지 않습니다. –

+0

InMessage.matches ("\ ++?") – wizztjh

답변

7

에 대한


Pattern pattern = Pattern.compile("\\++?"); 
System.out.println(pattern.matcher("+9970").find()); 

작품은 자바 문자 유효한 - 당신은 백 슬래시를 이스케이프해야합니다. 이 시도 :

Pattern pattern = Pattern.compile("\\++?"); 

는 그러나, 나는 그 실제로 원하는 정규 표현식 생각하지 않습니다. \+\d+의 정규 표현식에 해당

Pattern pattern = Pattern.compile("\\+\\d+"); 

, 적어도 하나 개의 숫자 다음에 즉 플러스 : 당신은 실제로 같은 것을 의미하지 않는다.

+0

감사합니다! "+01445676".matches ("\\ + \\ d +") – wizztjh

1

두 개의 백 슬래시를 사용해야합니다. 두 번째는 (자바 문자열이기 때문에) 두 번째를 이스케이프 처리하고, 두 번째는 +를 이스케이프 처리하는 것입니다 (정규 표현식의 특수 문자이기 때문에).

+0

oops, 5 초 :) – Nishant

+2

커뮤니티를위한 내용, 1 분 3 답변 :) – fego

1

"\\ +"와 (과) 더 비슷하지 않아야합니다. ? "\++?"이 없기 때문에 그것은 당신에게 오류를주고 나