2016-11-11 9 views
1

,로 // 테스트 코멘트 "를"찾을 수있는 정규 표현식이 될 수있는 것 // 테스트 코멘트 라인에 대한

10 println "Testing Comment" //Test Comment 

"다음 경우 테스트"10에 println "라인에 주석을 찾을 수있는 정규 표현식이 될 수있는 것 . 전체 문자열 나는 ​​내가 자바에서 렉서를 만드는 오전으로 토큰이 사용하려는

코드 :.. 내가 //.* 사용하여 시도했지만 그것의 의견 것을 일치하지 않는

StringBuilder sb = new StringBuilder(); 
    String[] p = new String[5]; 
    p[0] = "(?<Reserved>\\bPRINTLN\\b)"; //RESERVED WORDS 
    p[1] = "(?<Comments> //.*)"; 
    p[2] = "(?<Constants>[0-9]+)"; //Constants eg: 21 54 14215 
    p[3] = "(?<Special>[\\[\\]/.$*\\-+=><#()%,!|&{}])"; //SPECIAL CHAR Eg:-+*/ etc 
    p[4] = "(?<Identifiers>\\w+)"; //Identifiers eg: circum radius 


    for (String s: p) { 
     sb.append(String.format("|(%s)", s)); 
    } //for ends here 

    Pattern tp = Pattern.compile(new String(sb.substring(1))); // adding the patterns one after another separated by | 

    Matcher m = tp.matcher(line); 

ma의 find 메소드 사용하기 tcher, 명명 된 캡처 그룹을 토대로 토큰 화 중입니다.

+0

는 "//.*"시도했지만 운이 – Ronn

+1

이 https://regex101.com/ 살펴 유무 시도 \/\/. * –

+0

컴파일 오류가 발생합니다. "\/\/.*"에 대해 유효하지 않은 이스케이프 시퀀스 (유효한 것들은 \ b \ t \ n \ f \ r \ "\"\\) " – Ronn

답변

2

당신은 this regex을 시도 할 수 있습니다 :

\/\/.* 
  • \/\/ 일치 //이 주석에게
  • .*과 정합 // 다음과 같은 성격의 양을 시작, 줄 끝을 제외하고

귀하의 문제는해야합니다 \/\/ 대신 //을 사용했습니다. . /은 메타 문자이며 백 슬래시로 이스케이프됩니다. 묻기 전에 regex101을 사용하는 것이 좋습니다. 간단한 오류가 강조 표시되고 신속하게 테스트 할 수 있습니다.

+0

내가 2를 더할 때 나를 위해 일했다. 즉 \\/\\. *. 감사. 나는 당신이 제공 한 링크를 확실히 사용할 것입니다. – Ronn