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());
}
안녕하세요 주셔서 감사합니다. 같은 일을하고 싶지만 문자열을 사용하면 어떨까요? 내가 할 수 있을까? 문자열 fileText = "\\ b"+ str + "\\ b"; // 파일의 텍스트 문자열 searchWord = "\\ b"+ 검색 + "\\ b"; // 검색 할 단어 – Austin
@austin that 그러나 별개의 질문처럼 들리지만 ... "String"은 무엇을 의미합니까? 몇 가지 예를 들려 줄 수 있습니까? – Bohemian
별도의 질문을 할 수는 있지만 예제로 내 질문을 편집했습니다. – Austin