2017-12-01 4 views
0

사용자가 12 자 이하의 한 단어 인 검색 패턴을 입력하는 프로그램을 작성하고 있습니다. 단어는 모든 영숫자 조합으로 구성 될 수 있습니다. 사용자가 명령 줄 인수를 통해 입력하는 텍스트 파일에서 데이터를 읽는 중입니다. 나는 그 단어를 찾을 수 있었지만, 원하지 않는 단어를 발견했다. 예를 들어, "is"를 검색하고 텍스트 파일에 "This"가 포함되어 있으면 원하는 결과가 아닐 때 단어를 찾았 음을 알립니다.Regex를 사용하여 텍스트 파일에서 검색 패턴 찾기

단어 앞뒤에 ""을 넣었으나 줄의 첫 단어 인 경우 단어를 찾지 않아도됩니다. 또한 영숫자 옆의 문자는 모두 구분 기호입니다. 따라서 텍스트 파일에 "this-dog"이 포함되어 있고 검색 패턴이 "this"이면 "this"를 일치로 반환하고 싶습니다. 그것은 공간으로 취급해야합니다. 이건 내 프로그램의 이러한 측면에 대한 지금의로 내 코드입니다 : 각 끝

try { 
      Scanner input = new Scanner(System.in); 
      boolean again = true; 
      boolean notTheFirst = false; 
      while (again) { 


        System.out.printf("%n%s", "Please enter a search pattern: ", "%n"); 
        String wordToSearch = input.next(); 

        if (wordToSearch.equals("EINPUT")) { 
         System.out.printf("%s", "Bye!"); 
         System.exit(0); 
        } 

        String data; 
        int lineCount = 1; 

        try (FileInputStream fis = new FileInputStream(this.inputPath.getPath())) { 
         File file1 = this.inputPath; 
         byte[] buffer2 = new byte[fis.available()]; 
         fis.read(buffer2); 
         data = new String(buffer2); 
         Scanner in = new Scanner(data); 

         while (in.hasNextLine()) { 

          String line = in.nextLine(); 

          Pattern pattern = Pattern.compile(wordToSearch); 
          Matcher matcher = pattern.matcher(line); 

          if (matcher.find()) { 
           System.out.println("Line number " + lineCount); 
           String stringToFile = f.findWords(line, wordToSearch); 
           System.out.println(); 
          } 


          lineCount++;  
         } 


       } 
      } 

     } catch (IOException e) { 
      throw new Exception(e.getMessage()); 
     } 

답변

1

추가 "단어 경계"조건 :

Pattern pattern = Pattern.compile("\\b" + wordToSearch + "\\b"); 
+0

안녕하세요 주셔서 감사합니다. 같은 일을하고 싶지만 문자열을 사용하면 어떨까요? 내가 할 수 있을까? 문자열 fileText = "\\ b"+ str + "\\ b"; // 파일의 텍스트 문자열 searchWord = "\\ b"+ 검색 + "\\ b"; // 검색 할 단어 – Austin

+0

@austin that 그러나 별개의 질문처럼 들리지만 ... "String"은 무엇을 의미합니까? 몇 가지 예를 들려 줄 수 있습니까? – Bohemian

+0

별도의 질문을 할 수는 있지만 예제로 내 질문을 편집했습니다. – Austin