2013-02-20 5 views
0

로그 파일에 java 클래스의 발생 횟수를 찾기위한 프로그램을 작성 중입니다.String * .java에 대한 정규 표현식

Java 클래스가 호출되는 고유 한 시간 수를 계산하고 싶습니다. 검색 형식은 "* .java"이어야합니다.

누구든지 정규 표현식을 사용하도록 도와 줄 수 있습니까?

답변

0

충분한 정규 표현식은 아마도 [a-zA-Z_][a-zA-Z_0-9]*\\.java과 비슷할 것입니다. 이 정규식은 문자 (또는 밑줄)로 시작하는 문자열을 필요로하며 Java 클래스 이름 규칙을 따르는 문자 또는 숫자 (또는 밑줄)를 계속 사용합니다. 마침표는 \\ - 이스케이프 하나는 자바가 문자열에서 이스케이프 처리하고 두 번째는 정규 표현식 정규 표현식이 마침표에서 벗어날 수 있도록 이스케이프됩니다 (그렇지 않으면 마침표는 "모든 문자"를 의미하는 특수 문자 임). .

이 정규 표현식은 사용자가 정확하게 물어 보는 것보다 약간 더 나은 작업을 수행 할 것입니다 : .*\\.java (.java가 우선합니다.) 이는 ".java"앞에있는 줄 전체와 일치하므로 "MyClass.java"대신 "MyClass.java에서 파일 인쇄"와 같은 '클래스 이름'을 사용하십시오.

Rubular과 같은 온라인 도구에서이 표현을 시도해보고 변경해보십시오.

+0

작동하지 않습니다. 예제 문자열은 com.ibm.ws.util.ThreadPool $ Worker.run (ThreadPool.java:1473)에서와 같습니다. Java 클래스 ThreadPool.java가 있다는 것을 인정하고 한 번 나타납니다. 카운트는 여전히 0으로 반환됩니다 –

+0

정규식이 본질적으로 정확합니다 (제공되는 Rubular 링크 확인). 정규식을 사용하는 방식이 생각하는대로하지 않을 가능성이 높습니다. 따라서 더 많은 것을 돕기 위해 주변 코드를 알아야합니다. – user2089674

+0

public static final String EXAMPLE_TEST = "at com.ibm.ws.util.ThreadPool $ Worker.run (ThreadPool.java:1473)"; System.out.println (예 : \\ ([a-zA-Z _] [a-zA-Z_0-9 $] * \\. java ")); –