2015-10-16 4 views
0

Я пытаюсь выяснить, как объединить значения регулярных выражений, чтобы сделать 2 вещи 1) удалить все пробелы 2) удалить все знаки пунктуацииJava Объединение регулярных выражений значения

прямо сейчас я использую

splitWords = (currentLine.split("\\s+")); 

Это удаляет все пробелы из файла, который я читаю, теперь как добавить пунктуацию? Согласно API/p удаляет все знаки препинания.

Обновление: Извините, я забыл упомянуть, что я использую split, потому что я разделяю слова в файле пробелами и затем добавляю их в массив, например, например: привет, как вы в массиве превращаются в массив : arr [0] = hello, arr [1] how, arr [2] = are .. и т. д. Однако я не хочу, чтобы в элементе массива была пунктуация.

+0

В regex '|' действует как или – SomeJavaGuy

+0

Я пробовал splitWords = (currentLine.split ("s | p ")), без везения. Какой правильный синтаксис? –

+0

Когда вы говорите'/p', вы имели в виду '\ p {Punct}'? – Andreas

ответ

0

Вы можете объединить несколько классов символов в классе символов:

"[\\s\\p{Punct}]+" // Whitespace + Punctuation (POSIX) 

Для Юникода версии, использование:

"[\\s\\pP]+" // Whitespace + Punctuation (Connector,Dash,Open,Close,InitialQuote,FinalQuote,Other) 

или:

"[\\pZ\\pP]+" // Separator (Line,Paragraph,Space) + Punctuation (...) 

Нет необходимости используйте split(), если вы просто хотите удалить символы:

// Returns "HesaidItsaniceworld" 
"He said: \"It's a nice world\".".replaceAll("[\\s\\p{Punct}]+", ""); 
+0

Извините, я забыл упомянуть, что я Я использую split, потому что я разделяю слова в файле пробелами, а затем добавляю их в массив, например: hello, как вы попадаете в массив: arr [0] = hello, arr [1] how, arr [2] = are .. и т. Д. Однако я не хочу, чтобы элемент в массиве имел пунктуацию. Однако ваше решение сработало для меня. –

0

Если вы хотите заменить знаки препинания и пробелы, то почему вы используете метод split.
использование как this- currentLine.replaceAll("\\s+|[<punctuation marks>]+", "")

Где <punctuation marks> являются все знаки препинания. т.е. [\\!,\\.\\?]

+0

Вам не нужно скрывать '!', '.' и'? 'В символьном классе (' [] '). – Andreas

+0

Да, вы правы. Но чтобы быть в безопасности, мы можем избежать любых char в шаблоне regex, где мы не уверены, имеет ли он особое значение или нет. – Manoj

+0

Извините, я забыл упомянуть, что я использую split, потому что я разбиваю слова в файле пробелами и затем добавляю их в массив, поэтому например: привет, как вы попадаете в массив: arr [0] = hello, arr [1] how, arr [2] = are .. и т. д. Однако я не хочу, чтобы элемент в массиве имел знаки пунктуации . –

Смежные вопросы