Прошу помощи по регулярке.
Валидатор говорит, что находит больше слов, чем удовлетворяет условиям.
ЧЯДНТ?
package com.javarush.task.task19.task1907;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) {
String fileName = "";
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
fileName = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
try (FileReader fileReader = new FileReader(fileName)) {
char[] buffer = new char[(int) new File(fileName).length()];
while (fileReader.ready()) {fileReader.read(buffer);
}
Matcher matcher = Pattern.compile("([\\s\\W]+world[\\s\\W]+)|(world[\\s\\W]+)").matcher(new String(buffer));
int counter = 0;
while (matcher.find()) {counter++;
}
System.out.println(counter);
} catch (IOException e) {
e.printStackTrace();
}
}
}
//public static Pattern pattern = Pattern.compile("[\\s,.:!?-]world[\\s,.:!?-]");
//public static Pattern pattern = Pattern.compile("\\bworld\\b");
//public static Pattern pattern = Pattern.compile("world[\\s,.!?:;-]|[\\s,.!?:;-]world");
//public static Pattern pattern = Pattern.compile("([\\s,.!?:;-]+world[\\s,.!?:;-]+)|world[\\s,.!?:;-]+");
//public static Pattern pattern = Pattern.compile("([\\s\\p{Punct}]+world[\\s\\p{Punct}]+)|(world[\\s\\p{Punct}]+)|[\\s\\p{Punct}]+world$");
//public static Pattern pattern = Pattern.compile("([\\s\\W]+world[\\s\\W]+)|(world[\\s\\W]+)");