( Zahy | 2019. 07. 16., k – 20:29 )

Nincs probléma, értettem. Válaszaim

- a cikbben emlegetett PCRE neve (Perl Compatible Regex) nekem elegendő ahhoz, hogy ha valami számomra ismeretlen vagy épp homályos egy regex-ben, akkor elővegyem a Perl doksiját. A "man perlre" pontosan azt tárgyalja, hogy a hagyományos (ed/sed/grep/egrep/awk/lex) készlethez képest (aminek azért tudom a jelentését) pontosan miket is vezetett be Larry a Perl írásakor - azaz azokat a konstrukciókat, amiket sajnos nekem még szoknom kell. Ilyen volt pl. ez a (?: ) konstrukció is. A doksiban pedig ez áll (a Regular expressions rész Extended patterns szövegében) : kerek zárójelekkel csoportosításokat hozunk létre, un. capture group-okat (vagy capture buffer-eket), amelyekre a jól ismert backreference konstrukcióval lehet hivatkozni. Régebben ez volt a \1 .. \9, aztán ez Perlben ki lett bővítve, és többek között megjelent a $1 .. $9 forma (meg most olvasom, hogy más forma is). A keresett kifejezésről pedig szó szerint ez áll a man-ban:
====
"(?:pattern)"

This is for clustering, not capturing; it groups subexpressions like "()", but doesn't make backreferences as "()" does.
====
Azaz a csoportosítást megcsinálja (azaz gondolom lehet mögé * / + / ? / {n,m} sokszorozót írni), de nem jegyzi meg az illeszkedő sztringet - tehát később nem hivatkozhatsz rá a \1 (vagy $1) backreference segítségével. (A perlre man ír mindenféle egyebet is - teljesítményről, erőforrásfelhasználásról is, de nyilván azok itt most nem számítanak.)

(A regex101.com -os linkjeid szntén - szerintem - engem igazolnak azzal kapcsolatban, hogy (?:pattern) esetén nincs megjegyzett szövegrész - jobb közép ablakban: Group: sor nincs, csak a Full match.)

És ami az én bajom: ez szerepel a cikkben, mint problémás regex

(?:(?:\"|'|\]|\}|\\|\d|(?:nan|infinity|true|false|null|undefined|symbol|math)|\`|\-|\+)+[)]*;?((?:\s|-|~|!|{}|\|\||\+)*.*(?:.*=.*)))

És ugye itt agyalok már második este a kifejezés legvégén, ahol jól láthatóan az utolsó (?:.*=.*) mögött nincs sokszorozó (tehát e miatt nem kéne zárójelezni; és mivel a ?:-tal letiltom az illeszkedő sztring megjegyzését is, következésképpen az se lehet, hogy megjegyezném mondjuk a log-hoz az illeszkedő szöveget, tehát akkor mi a fenéért is zárójeleztem, ha a zárójelezés 2 funkciója közül egyiket se használom????

Azaz érzésre az ominózus regex végén ez kellene - és ugyanazt jelentené:

.*.*=.*))

- ennél viszont már talán feltűnne, hogy az egymást követő két .* egész egyszerűen redundáns, mert a első példány mohón elnyel mindent a második elől, és így lehetne csak .*=.* formában írni - ezzel pedig valszeg egy vagon visszalépést meg lehetne spórolni az illeszkedés megkeresésekor. (Aminek szerintem simán lehet az a következménye, hogy a Cloudflare sokkal később borult volna meg.)

(A macska az általad linkelt képen a regex-generátor és arra utaltam, hogy ha csak nem így állt elő a problémás kifejezés, akkor nem értem, hogy miért nem tűnt fel a QA során, hogy redundáns a minta.)

=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?