Regex для исключения результатов после динамической части URL - PullRequest
1 голос
/ 24 сентября 2019

Я устанавливаю правила отслеживания тепловой карты для аналитической платформы Matomo.Часть моего URL всегда будет динамической и содержать только заглавные буквы, например - http://example.com/ASDFG. Я могу решить эту проблему с помощью http:\/\/example\.com\/[A-Z]+.

Но становится сложнее отслеживать подкаталоги, например, http://example.com/ASDFG/page1.

http:\/\/example\.com\/[A-Z]+ будет не только отслеживать http://example.com/ASDFG, но и http://example.com/ASDFG/page1.

В идеале я думаю о двух отдельных выражениях:

  • один для игнорирования всего после части динамического URL, например - http://example.com/ASDFG
  • другой для сопоставления определенного имени страницы после динамического URL, например - http://example.com/ASDFG/page1

Нет необходимости сопоставлять параметр www, поскольку он автоматически добавляется аналитической платформой.

Как лучше всего написать эти два выражения?

1 Ответ

0 голосов
/ 24 сентября 2019

Я предполагаю, что, возможно,

^https?:\/\/example\.com\/[A-Z]+\/?$
^http:\/\/example\.com\/[A-Z]+\/?$

или без финальных слэшей,

^https?:\/\/example\.com\/[A-Z]+$
^http:\/\/example\.com\/[A-Z]+$

может быть желательным для первого.

Демонстрация 1


Для второго будет просто:

^https?:\/\/example\.com\/[A-Z]+\/(?:page1|page2|page3)\/?$
^http:\/\/example\.com\/[A-Z]+\/(?:page1|page2|page3)\/?$

для нескольких страниц и

^https?:\/\/example\.com\/[A-Z]+\/page1\/?$
^https?:\/\/example\.com\/[A-Z]+\/page2\/?$
^https?:\/\/example\.com\/[A-Z]+\/page3\/?$

дляпо одной странице.

Демонстрация 2

Вы также можете удалить \/? в конце, если в этом нет необходимости, и аналогично s?, если https не требуется.


Если вы хотите упростить / изменить / изучить выражение, это объяснено на верхней правой панели regex101.com .При желании вы также можете посмотреть в эту ссылку , как она будет сопоставляться с некоторыми примерами входных данных.


RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

...