Строка java разделена на все не-буквенно-цифровые, кроме апострофов - программирование

Строка java разделена на все не-буквенно-цифровые, кроме апострофов

Итак, я хочу разбить строку в java на любые не-буквенно-цифровые символы.

В настоящее время я делаю это так

words= Str.split("\\W+");

Однако я хочу сохранить апострофы (""). Есть ли регулярное выражение, чтобы сохранить апострофы, но ударить остальную часть мусора? Благодарю.

4b9b3361

Ответ 1

words = Str.split("[^\\w']+");

Просто добавьте его в класс символов. \W эквивалентен [^\w], который затем можно добавить ' в.

Обратите внимание, однако, что \W также на самом деле включает символы подчеркивания. Если вы хотите разделить на символы подчеркивания, вместо этого вы должны использовать [^a-zA-Z0-9'].

Ответ 2

Для основных английских символов используйте

words = Str.split("[^a-zA-Z0-9']+");

Если вы хотите включить английские слова со специальными символами (например, fiancé) или для языков, на которых используются неанглийские символы, перейдите к

words = Str.split("[^\\p{L}0-9']+");