2016-10-29 3 views
1

정규식을 사용하여 특정 짹짹에서 사용자 정의 묵시적 구문을 분석하려고하지만 항상 항상 반환합니다 IllegalStateException 일치하는 항목을 찾을 수 없지만 다른 사람을 위해 일하는대로 정규식이 좋은 것을 알고 http://shahmirj.com/blog/extracting-twitter-usertags-using-regex 발견 이 장소.자바 구문 분석 짹짹에서

String input = "@rivest talk in 30 minutes #hype"; 
    String regex = "(?<=^|(?<=[^a-zA-Z0-9-_\\\\.]))@([A-Za-z]+[A-Za-z0-9_]+)"; 
    Pattern pattern = Pattern.compile(regex); 
    Matcher matcher = pattern.matcher(input); 
    System.out.println(matcher.group(0)); 

여기를 실수를 찾을 수 있습니까? 또는 다른 정규식을 사용해야합니까 에 설명 된대로 일치하는 방법 중 하나 인 find()을 잊어 버린 경우

답변

0

+[A-Za-z] 무의미 보였다으로

String input = "@rivest talk in 30 minutes #hype"; 
String regex = "(?<=^|(?<=[^a-zA-Z0-9-_\\\\.]))@([A-Za-z][A-Za-z0-9_]+)"; 
Matcher matcher = Pattern.compile(regex).matcher(input); 
if (matcher.find()) { 
    System.out.println(matcher.group(0)); 
} 

는 또한, 정규식에 작은 비틀기를했다. the javadoc에서

0

는 :

정규의 명시적인 상태는 처음에 정의되지 않은; 일치가 성공하기 전에 에 쿼리를 시도하면 IllegalStateException이 throw됩니다. 정규 표현 엔진의 명시적인 상태는 모든 매치 조작에 의해 다시 계산됩니다.

당신은 matcher.group(0)

를 호출하기 전에 matcher.matches()를 호출해야