Соответствие строк и сохранение в массиве с регулярным выражением в Java - PullRequest
1 голос
/ 28 января 2012

Я создаю программу, которая берет файл и находит идентификаторы.До сих пор я удалял любые слова в кавычках, любые слова, начинающиеся с цифры, и я удалял все несловарные символы.

Есть ли способ найти слова, которые не соответствуют словам в массиве, и сохранить эти словадругой массив с помощью регулярных выражений?Я могу понять, я пытался использовать метод разделения, но он не работает правильно, когда я пытаюсь разделить на пробелы ... Это то, что я сделал, чтобы разделить его.

String[] SplitString = newLine.split("[\\s]");

Ответы [ 2 ]

0 голосов
/ 28 января 2012

Вы можете сделать это просто в одну строку, сначала удалив известные слова, а затем разделив:

String[] unknownWords = newLine.replaceAll("\\b(apple|orange|banana)\\b", "").split("\\s+");

Примечания:

  • Ваше регулярное выражение [\s] эквивалентно \s, поэтому я упростил его
  • Возможно, вам следует разбить на любое число пробелов: \s+
  • \b означает «границу слова» - это означает, что регулярное выражение удаления не будет соответствовать applejack
  • Регулярное выражение (A|B|C|etc) является синтаксисом логики «ИЛИ»
0 голосов
/ 28 января 2012

Используйте

String[] SplitString = newLine.split("\\s");

, если вы не хотите объединять несколько пробелов / табуляции и т. Д., Но используйте

String[] SplitString = newLine.split("\\s+");

если вы делаете. Например, если ваша строка:

"a  b c"

первый даст вам четыре токена: "a", "", "b" и "c", а второй даст вам три: "a", "b" и "c".

...