2014-10-01 9 views
0

Java에서 다음 문자열과 일치하는 패턴을 만들려고합니다.쉼표로 구분 된 문자열의 정규식

String message ="%%140911,A,140929100526,S0117.6262E03647.8107,000,067,F100,4F000100,108"; 

내가 형성 한 패턴이 문자열과 일치하지 않습니다. 내가 뭘 놓치고 있니? 나는 지금까지 시도한 패턴입니다.

private static final Pattern pattern = Pattern.compile(

     "(\\%\\%)"+"(\\d)," + // Id 
     "([AL])," + // Validity a for valid and l for invalid 
     "(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})," + // Date (YYMMDD)Time (HHMMSS) 
     "([NS])" + "(\\d{2})(\\d{2}\\.\\d+)" + "([EW])" + "(\\d{3})(\\d{2}\\.\\d+)," + //loc 
     "(\\d+)," + // Speed 
     "(\\d+)," + // Direction 
     "([FC])" + "(\\d{3})," + // temperature in Fahrenheit/celsius 
     "(\\w{8})," + // status 
     "(\\d+)"); // event 
+1

당신이 달성하고자 할 수

"(\\%\\%)"+"(\\d)," 

을 변경해보십시오? 단순히 쉼표로 문자열을 분할하고 다른 변수에 할당하십시오. – Braj

+0

특정 패턴으로 서버에 보낸 메시지를 일치시키고 싶지만 문자열을 분할하는 옵션도 있습니다. – user3737364

답변

3

첫 줄에는 +이 누락되었습니다.

"(\\%\\%)"+"(\\d+)," 
+2

잘 잡습니다. BTW, @ user3737364, 정규 표현식을 작성할 때 간단한 것으로 시작한 다음 더 복잡하게 만드십시오. 복잡한 정규식이 작동하지 않으면 작업이 시작될 때까지 단순화하십시오. 이 경우 행운이 당신의 버그는 정규식의 맨 처음에 나타납니다. 그러나 아마 더 많은 버그가 있으며 매우 복잡한 표현으로 그들을 보는 것은 매우 어렵습니다. – AlexR

+2

'% '를 (를) 이스케이프 할 필요가 없습니다. –

+0

감사합니다. – user3737364

관련 문제