정규 표현식으로 파싱하기에 좋은 리소스를 찾을 수 없습니다. 누군가 제게 길을 보여 주시겠습니까?자바 정규식 get substring
어떻게이 문장을 구문 분석 할 수 있습니까? "file.c는에서 중단 점 (10), 주() : 10"
명령문의
내가 문자열을 얻을 싶다 "주()"또는 3 단어.
정규 표현식으로 파싱하기에 좋은 리소스를 찾을 수 없습니다. 누군가 제게 길을 보여 주시겠습니까?자바 정규식 get substring
어떻게이 문장을 구문 분석 할 수 있습니까? "file.c는에서 중단 점 (10), 주() : 10"
명령문의
내가 문자열을 얻을 싶다 "주()"또는 3 단어.
이 작동 : 기본적으로 정규 표현식 .(.*) at
그룹
public void test1() {
String text = "Breakpoint 10, main() at file.c:10";
String regex = ",(.*) at";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
(1) 값 main()
을 반환.
standard Sun tutorial on regular expressions을 보았습니까? 특히 matching groups 섹션이 유용 할 것입니다.
좋은 자료 : http://gskinner.com/RegExr –
시도 : 음 .*Breakpoint \d+, (.*) at
, 정규식 main \(\)
이 구문을 분석합니다. 그러나, 나는 당신이 첫번째 comman 이후와 마지막 "at"전에 모든 것을 원한다고 생각합니다 : ,(.*) at
은 그룹에서 (1)의 식에서 괄호로 열립니다.
문자열의 0 번째 단어를 (사용자 의견에서 말했듯이)이라고 가정하면 StringTokenizer
을 사용하여 먼저 깰 수 있습니다. 즉, (공간이 기본입니다)
()
하려면
main
을 반환
List<String> words = new ArrayList<String>();
String str = "Breakpoint 10, main() at file.c:10";
StringTokenizer st = new StringTokenizer(str); // space by default
while(st.hasMoreElements()){
words.add(st.nextToken());
}
String result = words.get(2);
, 당신은 또한 다음 단어를 취할 필요가 구분 기호를 지정할 수 words.get(3)
이 결과를 얻고 자하는 기준으로 정의하십시오. –
세부 정보가 충분하지 않습니다. 당신은 당신의 끈의 세번째 단어를 원하십니까? 또는 항상 "Breakpoint 10, * at file.c : 10"에 포함되는 것은 무엇입니까? 아니면 다른 것? – Guillaume
정확한 문자열'main()'또는 매개 변수를 포함 할 수있는 메서드 이름을 찾고 싶습니까? 어쨌든, regular-expressions.info는 좋은 정규 표현식과 꽤 많은 튜토리얼을 가지고있다. – Thomas