Я пытаюсь написать регулярное выражение, которое используется для определения, содержит ли строка непустые токены (после обрезки), разделенные .
, т. Е. Следующей формы. Это лучшее, что я придумал.
Pattern.compile("^(?!\\.)(?!.*\\.$)(?!.*?\\.\\.)(?!\\p{Space}$)(?!\\p{Space}\\.)(?!.*\\.\\p{Space}$)[\\p{Graph}\\p{Space}]+$", Pattern.UNICODE_CHARACTER_CLASS);
Модульные тесты присутствуют в следующем коде: https://ideone.com/kuej3D
Это работает для всех случаев. Я, однако, чувствую, что есть лучший способ сделать то же самое.
Например,
как проверить форматы формы,
<s1><.s2>*
s1
- непустая строка после усечения начального и конечного пробелов.
.
- буквальный период
s2
- непустая строка после усечения ведущий и обучающий пробелы.
*
обозначает, что число вхождений может быть минимальным 0 и максимальным бесконечным.
Пример:
alpha$#@.ksj`\\c.lijd*3260_+
- допустимая строка
a b. c d. e f
- допустимая строка
alpha.
- недопустимая строка
.beta
- недопустимая строка
Пустая строка недопустима строка
является недопустимой строкой
x..y..z
является недопустимой строкой
Все тестовые примеры в приведенном выше коде ideone должны вывести true
.