파일에 메소드 정의가있는 행을 찾으려고합니다. 는 예를 들어, 행은 : 내가 사용하려고 해요Java 메소드 정의와 일치하는 정규 표현식
// line has TAB indent public Stream<JsonNode> requestDifferences(List<Integer> commitIds) {
정규 표현식은 다음과 같습니다
는"^.+(!?if|while|for|catch|do|new|return).+\\(.*\\)\\s\\{$"
예 선 위의 정규 표현식과 일치합니다. 그러나 익명의 클래스, 조건, 루프 및 return 문을 포함하는 모든 문자열도 위의 정규 표현식과 성공적으로 일치합니다.
이 표현식에 어떤 문제가 있습니까?
교대 그룹에서 단어가없는 줄을 찾으려면, "^ (! :. * \\ b (? : if | while | for | catch | do | new | return) \\ b). + \\ (. * \\) \\ s * \\ {$ "'- 그러나 단일 정규식으로 코드를 구문 분석하는 것은 좋지 않습니다. –
이것에 대한 정규식 접근 방식은 어려움을 겪을 수 있습니다. 대신 실제 파서를 사용하는 것을 고려하십시오. http://javaparser.org/ – Henrik
하나의 정규식으로 코드를 파싱하는 아이디어가 마음에 들지 않습니다. 그러나 공개/비공개 태그를 시작하는 라인을 검색하는 것이 어떻습니까? 일치를 크게 줄일 수 있습니다. –