Я прочитал несколько подобных вопросов здесь, но ни один из них, похоже, не совсем так, как я хочу, так что здесь идет. Мне нужно выражение регулярного выражения, чтобы соответствовать строке (строкам) первых разделов URL-адреса (включая буквенные символы c и тире), но не в том случае, если оно содержит точку после последнего слова SLD (ie в URL-адресе) TLD или общедоступный c суффикс). Он должен включать субдомен, в данном примере «приложение», и протокол, который никогда не меняется.
Тест 1
Это должно не совпадать, так как есть точка сразу после SLD
https://app.foo-bar.foobar
Результат не должен совпадать.
Тест 2
Этот должен совпадать до конца SLD , но не содержат следующую sla sh, точку или путь
https://app.foo-bar/foo/1.0/bar
Результат должен совпадать для "https://app.foo-bar"
Тест 3
Это должно также соответствовать концу SLD
https://app.foo-bar/service/1
Результат должен совпадать с "https://app.foo-bar"
Вот что я получилось, что почти работает, но я думаю, что есть ошибка с моим использованием квантификаторов в негативном прогнозе, который жадно пропускает URL-адреса, где точка далее идет дальше по пути:
https:\/\/app\.[a-zA-Z0-9-]+(?!.*\.)
Это правильно пропускает тест 1 и правильно соответствует Тесту 3, но неправильно пропускает Тест 2.
Я использовал regex101 для тестирования этой вещи: https://regex101.com/r/Ns8IAf/1* 10 43 *
По сути, я хочу сопоставить URL-адреса, которые соответствуют шаблону, который не включает TLD, и игнорировать элементы в пути, которые могут содержать что-либо.
Есть идеи?