Написание регулярного выражения для URL в Google Analytics - PullRequest
0 голосов
/ 17 июля 2009

У меня огромный список URL в формате:

Какой RegEx я мог бы использовать, чтобы получить последние три URL-адреса, но пропустить первые два, так что каждый URL-адрес без присоединенного города указан, а те, у которых есть города, запрещены?

Примечание. Я использую Google Analytics, поэтому мне нужно использовать RegEx для отслеживания моих URL с их расширенной функцией. На данный момент Google отклоняет каждое регулярное выражение.

Ответы [ 4 ]

1 голос
/ 17 июля 2009

Как правило, лучшее предложение, которое я могу сделать для анализа URL с помощью регулярных выражений: не .

Ваше время много много лучше потратить на поиск существующей библиотеки для вашего языка, посвященной задаче обработки URL.

Он сработает во всех крайних случаях, будет полностью RFC-совместимым, не будет содержать ошибок, безопасен и будет иметь отличный пользовательский интерфейс, так что вы сможете просто высосать биты, которые вам действительно нужны.

В вашем случае, предложенный способ его обработки, используя вашу библиотеку URL, извлекает элементы s и затем явно работает с ними.

Таким образом, в большинстве случаев вам придется иметь дело с самим путем, и вам не придется слишком волноваться о его

http://site.com/
https://site.com/
http://site.com:80/ 
http://www.site.com/ 

Если вы действительно не хотите.

Для «Пути» вы можете даже использовать сплиттер (или специальный анализатор пути), чтобы сначала разбить путь на элементы, просто чтобы быть уверенным.

0 голосов
/ 17 июля 2009

Попробуйте это регулярное выражение:

^http://www\.example\.com/dest/[^/]+/$

Это будет соответствовать только трем последним URL.

0 голосов
/ 17 июля 2009
/http:\/\/www\.site\.com\/dest\/\w+\/?$/i

соответствует, если они все на одном сайте с "dest" там. Вы также можете сделать это:

/\w+:\/\/[^/]+\/dest\/\w+\/?$/i

, который будет соответствовать любому сайту с любым протоколом (http, ftp) и любому сайту с / dest / country в конце и необязательным /

Обратите внимание, что это будет работать только с подмножеством того, что URL может быть законно.

0 голосов
/ 17 июля 2009

Текущее решение tj111 не работает - оно соответствует всем вашим URL.

Вот тот, который работает (и я проверил ваши значения). Это также соответствует, независимо от того, есть ли косая черта или нет:

http:\/\/.*dest\/\w+/?$
...