문제

필요에 맞는 일을 줄에서는 텍스트 입력.라인과 같습니다:

 to be/ Σ _ Σ  [1pos, 1neg] {0=1, 2=1}

내가 사용하는 스캐너 등을 읽는 각 라인의 텍스트,그리고 내가 쓴 다음 코드입니다.그러나,무언가가 제대로 작동하지 않기 때문에,두둑"을"일치하지 않에 대한 라인,그리고 그것이 있어야 하기 때문에"to"에 포함된 라인(가 일치하지 않은""에서 라인,하지만 아무것도 일치):

 Scanner scanner = new Scanner(file);
 while(scanner.hasNext()) {
      String line = scanner.nextLine();
      System.out.println("line: " + line);
      Pattern p_pos = Pattern.compile("to");
      Matcher m_pos = p_pos.matcher(line);
      String match = m_pos.group(0);
      System.out.println("match: " + match);
      boolean b_pos = m_pos.matches();
      if(b_pos) {
          System.out.println(match);
      }
 }

출력:

line:    to be/ Σ _ Σ  [1pos, 1neg] {0=1, 2=1}
Exception in thread "main" java.lang.IllegalStateException: No match found
    at java.util.regex.Matcher.group(Matcher.java:485)
    at lady.PhrasesFromFile.readFile(PhrasesFromFile.java:31)
    at lady.PhrasesFromFile.main(PhrasesFromFile.java:17)

나는 하나 더 많은 질문:어떻게 처리할 수 있는 선도록 스토어에서 모든 것을 행의 시작 부분까"/"기호가?나는 찾을 수 없는 방법에는 API 입니다.가능한 그것은 그렇게 할까?기본적으로 내가 원하는 연속적으로 라인을 통해 이동,저장소의 조각이 라인에서 다른 변수,그리고 다음의 값을 사용하여 이들 변수입니다.이후 나는 얼마나 많은 토큰가하기 전에 처음"/"기호를 사용할 수 없다고 다음()일정 횟수입니다.

사전에 감사합니다.

도움이 되었습니까?

해결책

.matches() 검색하려고 시도 전체 입력 문자열입니다.사 .find() 을 일치시키려면의 일부 입력 문자열,또는 .lookingAt() 하려면 시작과 일치하는 입력 문자열입니다.

http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Matcher.html

또한,당신이 확장하는 패턴을 포함한 일치하는 그룹(일반 regex 참조하는 방법에 대한 자세한 내용은 일치하는 그룹 작업)을 사용할 수 있습니다 .group() 기능 후에 성공적으로 일치하여 검색하는 부분과 일치하는 특정 그룹 내에 패턴이 있습니다.

다른 팁

할 수 있는 부분을 추출에 필요한 토큰을 사용하여 사용:

String tokenSection = Pattern.compile("(to\\s+.*?)/").matcher(line).find().group(1);

다음 반복 추출하는 것 토큰 사용

Pattern.compile("\\w+").matcher(tokenSection).find();

물론 당신이 없을 플러그 위의 코드 조각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top