"(?<!i\\.e)\\.? |\\.$"
должен сделать трюк.
В английском языке это регулярное выражение говорит, что разделителем является любое из следующего:
- пробел
- точка и пробел (если точке не предшествует "i.e")
- точка и конец строки.
Что касается вашего редактирования, попробуйте "((?<=\\s\\w{1,10})[^\\w\\s])?\\s|[^\\w\\s]$"
[^\\w\\s]
означает любой символ, который не является буквой, цифрой или пробелом (то есть пунктуацией).
(?<=\\s\\w{1,10})[^\\w\\s])?\\s
означает пробел, которому может предшествовать пунктуация, если перед следующим предыдущим пробелом нет других знаков препинания. То есть он не будет совпадать с .[space]
в e.g.[space]
, потому что между e и g существует полная остановка. Задняя часть ((?<=\\s\\w{1,10})
) должна иметь максимальную длину и поэтому не может использовать операторы «ноль или более» или «один или более» (*
и +
). Я поставил произвольный предел в 10, потому что я не знаю ни одного слова или аббревиатуры, которые бы содержали знаки препинания и состояли из нескольких символов.
edit: я протестировал новое регулярное выражение на it is red i.e. RED. not read. e.g. 1,2, done!
, и он выдал:
- он
- есть
- красный
- RED
- не
- прочитать
- сделано