Страницы: 1
Redirector 2.9.1.1, 2.9.2, 2.9.3 в Симанке.
Отдельные правила, например: (^https?://\S+)(?:[&?]utm_source)+?, работают.
Но душа просит вкорячить их все в одну регулярку.
Если (https?://\S+)([&?]utm_)(?:source|medium|… и т.д., то получается рекурсия.
В консоли ошибок:
"Since this causes an endless loop, the redirect has been disabled.
Edit this redirect to fix the recursion."
Если (https?://[^?_&=]+)([&?]utm_)(?:source|medium|… и т.д., то не всегда срабатывает, бывают ссылки, где есть ?_&= до utm_ (ниже будут примеры).
Как применять \G и (1) — не разобрался.
В Notepad++ срабатывает такое:
Найти ()\K([&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer))++\S*$
Заменить на (\1)
Redirector даже не даёт сохранить правило:
"The pattern
()\K([&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer))++\S*$
is not a legal regular expression.
Details:
SyntaxError: nothing to repeat"
Вот, выписал несколько примеров:
https://example.com/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=header-link https://example.ru/maps/?utm_source=geoblock_maps_paris https://example.ru/20190918/1558825891.html?utm_source=yxnews&utm_medium=desktop&utm_referrer=https%3A%2F%2Fyandex.ru%2Fnews https://www.example.ru/russia/676607?utm_source=mst_rd https://tv.example.ru/program/3894340?eventId=142758609&utm_source=yamain&utm_medium=informer&utm_campaign=link https://example.ru/maps/?mode=search&utm_source=morda&utm_medium=service_subtitle&text=%D1%80%D1%8B%D0%B1%D0%B0%20%D0%B8%20%D0%BC%D0%BE%D1%80%D0%B5%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B&utm_region=222&utm_content=riba_i_moreprodukti https://realty.example.ru/parij_i_parijskaja_oblast/kupit/kvartira/karta/?layer=price-sell&subLocality=193326&leftLongitude=37.410946&bottomLatitude=55.84627&rightLongitude=37.572994&topLatitude=55.892986&utm_source=yandex_sign&utm_medium=cpm&utm_campaign=subtitle_rayonu-r-1&utm_content=rayonu_ceny-na-zhiljo https://example.ru/20190919/1558866070.html?utm_source=yxnews&utm_medium=desktop&utm_referrer=https%3A%2F%2Fyandex.ru%2Fnews
Отредактировано negodnik (22-09-2019 18:56:51)
Отсутствует
брррр.... Ну, ЕЯвПП то:
В Notepad++ срабатывает такое:
Найти ()\K([&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer))++\S*$
Заменить на (\1)Redirector даже не даёт сохранить правило:
"The pattern
()\K([&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer))++\S*$
is not a legal regular expression.
Редиректор(чтоб оно такое не-было..) абсолютно прав, ибо нету в JS RegExt опертора\спецсимвола ' \K '. Это нечто внутренее у Нотепад++.
Ты хочешь убрать мусорные(и это паравда, они таковые) гугло-параметры из ссылок..? Если так, то вот, когда-то делал скриптег себе:
// ==UserScript== // @name utm-Remove // @namespace * // @include * // @exclude https://www.youtube.com/watch?* // @version 1 // @grant none // @run-at document-end // ==/UserScript== //document.addEventListener("DOMContentLoaded",utmRemove, false); setTimeout(utmRemove, 100); function utmRemove() { const vRegExp = new RegExp(/[?&](?:utm_|fb_action_|yclid).*&?/gi); // из строки адреса убрать if ( vRegExp.test(location.search) && history.replaceState) { history.replaceState(null,'', location.href.replace(vRegExp, '') ); } // убрать из ссылок страницы //if (document.links) { // for( var x = 0; x < document.links.length; x++ ) { // let curLink = document.links[x], newHref = ''; // if( curLink.href.match(vRegExp) ) { // newHref = curLink.href.replace(vRegExp, ''); // let oRel = curLink.getAttribute('rel'); // oRel = oRel ? ( oRel + ' ' ) : ''; // curLink.setAttribute('rel',oRel+'redirect'); // curLink.setAttribute('replacedurl',curLink.href); // curLink.title = ( curLink.title ? ( curLink.title + ' - ' ) : '' ) + 'Old URL: \n' + decodeURIComponent(curLink.href); // curLink.href = newHref; // } // } // }; };
А если поправить твою, то наверное так:
[&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer).* // или без_пробельный, если сильно хоцца [&?]utm_(?:source|medium|campaign|content|region|term|reader|main_portal|place|referrer)\S*
хотя, проще, поставить просто точка_звездочка вслед за utm_. Как выше в скрипте.
------------
я бодался\пытался тоже сам это все убирать, а потом один хороший парень заделал\портировал плугин VEG-a на PM Pure URL for Palemoon.
Чистит эту байду отовсюду.
Ave VEG, Ave moonbat!
Отредактировано mokujin (21-09-2019 21:04:55)
...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation
Отсутствует
> Это нечто внутренее у Нотепад++.
Не, не внутреннее: https://www.regular-expressions.info/keep.html и у Фридла в учебнике есть.
Так тоже не получается (в N++):
https?://\S+(?<=[&?]utm_(?:source|medium… — lookbehind asertion is not fexed leight
как и написано в regular-expressions.info: Perl and Boost require the lookbehind to be of fixed length.
Спасибо за помощь, но со скриптом не получилось. Грисманки или чего-то подобного нет, пробовал в NoScript’ (после загрузки DOM) — никакого эффекта.
Pure URL для Симанки только самая первая версия подходила (кажется), да и не хочется ещё одно расширение. С отдельными правилами получается Redirector’ом. Думал, может в одно удасться объединить.
UPD: Похоже, "source" всегда первый, тогда можно оставить только (^https?://\S+)[&?]utm_source
UPD 2: Неа, не всегда, увы.
Отредактировано negodnik (23-09-2019 15:45:08)
Отсутствует
Я хз. кто такой Фридл. Не читал.
Но самый обычный и очень хорошо, КМК наглядно, составленный тест(тысячи их , проверочных. Благодарочка вам, люди их создающие) не проходит твоё(и Фридла) вырежение Регулярные выражения
А всё потому, что ты путаешь\совмещаешь АКА отождествляешь лёгкое с синим. Классическая логическая ошибка.
Регулярки в Нотепаде++ свои, и они ниразу не должны совпадать с правилами RegExt JS.
Возможно, ты попутал подсведку синтаксиса - с проверкой соответствия стандататм RegExt JS Может такое быть? Тёплое не всгда синее, а бархатистое не значит сладкое.
N++ имеет своё виденье на то, что такое "регулярные выражения". И он, ска, может это виденье иметь как хочет. Это факт!
Отредактировано mokujin (21-09-2019 22:41:28)
...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation
Отсутствует
может в одно удасться объединить.
Удастся. Если твой Редиректор правильно исполняет\интерпертирует JS RegExt, - то вообще никакой проблеммы нет.
Есть недостаточно верно сформулированная задача(неверный\с_ошибками составленный(~ое) JS_RegExt).
вот, например, выражения(й) кот-е работает у мя в расш-и SilenBlock и кот-е соотв-ют JS_RegEx. Ну т.е. вся текстовая срань, из сетевых запросов попавшая под это соответствие будет порезана ещё до..:
\Wad(?!%)(?:_?river|betclickin|code|creative\d?|force|form|fox|frame\w*|gear|glare|healers|high|labs?|look|market\w*|master\w*|mixer|nium|nxs|packs|partner)[\W_] (?:mix|\W)adv(?:ert\w*|redirr|ombat|_out)[\W_] \Wt(?:ea|i)(?:s|z)ers?(?:net|bank|media|lady|\.ssl-services)?\W
...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation
Отсутствует
Помогите, пожалуйста!
Задача элементарная.
Есть URL, например:
https://aliexpress.ru/item/4000876943321.html?spm=a2g0o.productlist.0.0.1a1317b3Eocgag&s=p&ad_pvid=202008091616563902220909463000007178640_2&algo_pvid=a0a31acd-2703-4bba-9614-5c3f61391f49&algo_expid=a0a31acd-2703-4bba-9614-5c3f61391f49-1&btsid=0ab6f82115970150164906023e2be5&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_
Надо просто отрезать хвост, что бы получилось:
Что-то сам не могу разобраться.
Отсутствует
Наконец-то дошли руки сделать то, что требовалось в первом сообщении:
^(https?://[^/]+[^?&]*(?:[?&](?!utm_)[a-zA-Z0-9=._/:-]+)*)([&?]utm_[a-z_]+=[a-z0-9._/:-]+)+(&(?!\2)\S+)* $1$3
Работает в 2.9.3 и в 3.5.3
Отредактировано negodnik (25-08-2022 22:40:08)
Отсутствует
Страницы: 1