Шаблон регулярного выражения - запрос - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь найти шаблон, который удовлетворял бы приведенным ниже правилам

mydomain.com
www.mydomain.com
www.alternatedomain.com
www100.mydomain.com
online.mydomain.com
subl.mydomain.com

Шаблон, который я создал до сих пор, не работает.

Я могу иметь или не иметь значения раньшеMYDOMAIN.

private static final String MY_PATTERN =
 "((www*|online|subl)*\\.((mydomain|alternatedomain)\\.(com)$))";

А если он имеет значения, он должен принадлежать ограничительному набору

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Я предлагаю использовать

String rx = "^(?:(?:www\\d*|online|subl)*\\.)?(?:mydomain|alternatedomain)\\.com$";

См. Демонстрационную версию regex

Я удалил или преобразовал в группы без захвата все группы захвата вшаблон.Если вы используете эти части строки позже, верните их.

Если вы используете регулярное выражение с методом .matches(), удалите ^ и $, тогда они являются избыточными, так как метод гарантирует, чтовся строка соответствует шаблону.

Подробности

  • ^ - начало строки
  • (?:(?:www\\d*|online|subl)*\\.)? - необязательный необъявлениесопоставление групп
    • (?:www\\d*|online|subl)* - www и 0+ цифр, или online или subl
    • \\. - точка
  • (?:mydomain|alternatedomain) - группа без захвата, соответствующая mydomain или alternatedomain
  • \\.com - .com подстрока
  • $ - конец строки.
0 голосов
/ 18 декабря 2018

Попробуйте ((www\\d*|online|subl)\\.)?(mydomain|alternatedomain)\\.com

Вы можете протестировать свое регулярное выражение онлайн здесь , но не забудьте заменить \\ одним \ (потому что в коде Java \\ означает \ в регулярном выражении)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...