Строка java разделена на все не-буквенно-цифровые, кроме апострофов
Итак, я хочу разбить строку в java на любые не-буквенно-цифровые символы.
В настоящее время я делаю это так
words= Str.split("\\W+");
Однако я хочу сохранить апострофы (""). Есть ли регулярное выражение, чтобы сохранить апострофы, но ударить остальную часть мусора? Благодарю.
Ответы
Ответ 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']+");