С учетом строки S найдите количество слов в этой строке. Для этой проблемы слово определяется строкой из одной или нескольких английских букв.Java Split regex
Примечание: Пространство или любые специальные символы, такие как! [,?. \ _ '@ +] Будут действовать как разделитель.
Формат ввода: Строка будет содержать только строчные английские буквы, верхние регистровые буквы, пробелы и специальные символы:! [,? ._ '@ +].
Формат вывода: в первой строке напечатайте количество слов в строке. Слова не обязательно должны быть уникальными. Затем напечатайте каждое слово в отдельной строке.
Мой код:
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String regex = "(|!|[|,|?|.|_|'|@|+|]|\\\\)+";
String[] arr = str.split(regex);
System.out.println(arr.length);
for(int i = 0; i < arr.length; i++)
System.out.println(arr[i]);
Когда я отправить код, он работает чуть более половины тестовых случаев. Я не знаю, что такое тестовые примеры. Я прошу помощи в законе Мерфи. Каковы ситуации, в которых выполняемое мной регулярное выражение не будет работать?
Почему вы включая обратную косую черту в своем регулярном выражении? Этого не требуется. Кроме того, вы используете '[' и ']', не избегая их. –
Для символов со специальным значением в регулярном выражении вам необходимо избегать их. В качестве побочной заметки вам может быть проще и проще разделить на основе набора символов (например, '[a-z]' - это набор всех строчных букв), а не серия X или Y или Z. – Vulcan
Прошу прощения. Не знал, что мне пришлось скрывать обратную косую черту, чтобы опубликовать ее здесь. – juice