Многоточие в регулярных выражениях

169
08 июля 2019, 02:20

Не выходит заставить регулярное выражение принимать только точку. В строке присутствует как точка так и многоточие(при чем как в первом так и во втором случае возможны "лишние" пробелы): Это строка... Это строка . Это строка.. Многоточие нахожу так: "\\s*\\.{3}\\s*". После чего пытаюсь найти и заменить все точки так: "\\s*\\.{1}\\s*". В результате получаю то что последнее выражение находит точки одиночные и в многоточиях. Как исключить многоточия для данного выражения?

Answer 1

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

"\\s*(?<!\\.)\\.(?!\\.)\\s*"

Тут (?<!\.) находит совпадение, если сразу перед точкой нет другой точки, а (?!\.) проверяет, нет ли точки после точки, которая находится с помощью шаблона \..

См. демо регулярного выражения.

READ ALSO
Класс сервисы и DTO не видят класс @ConfigurationProperties

Класс сервисы и DTO не видят класс @ConfigurationProperties

Имеется класс с аннотацией @ConfigurationPropertiesВ нем находятся поля, которые подгружаются из файла

135
В сокет отправляется не полная строка

В сокет отправляется не полная строка

Есть клиент на java, который отправляет длинный json на сервер, который написан на pythonЕсли длина json'а не очень большая, то все нормально отправляется

126
Разбиение строки на группы в регулярных выражениях

Разбиение строки на группы в регулярных выражениях

Хочу проверить строку на наличие хаотически выставленных букв разных регистровДля примера строка на входе:

144
Можно ли писать на Java для iOS?

Можно ли писать на Java для iOS?

До меня дошли страшные слухи, что на iOS нет JVMБолее того, до меня дошли страшные слухи, что будто бы фирма Эппл не разрешает ставить JVM на iOS

172