mai multe potriviri regex în porc pentru fișierele de jurnal

Am 2 fișiere de intrare.

Intrare 1 (conține mai multe adrese URL):

(http://a.com/search?q=cache:QD7vZRHkPQoJ:ca.xyz.com/jobs2/view/17069404+&cd=1&hl=en&ct=clnk&gl=ca) (http://a.com/search?q=cache:G9323j2oNbAJ:ca.xyz.com/jobs2/view/5977065+&cd=1&hl=en&ct=clnk&gl=ca) (http://a.com/search?q=cache:aNspmG11qAJ:hk.xyz.com/jobs2/view/16988928+&cd=2&hl=zh-TW&ct=clnk&gl=hk) (http://a.com/search?q=cache:aNspmG11AJ:hk.xyz.com/jobs2/view/16988928+&cd=2&hl=zh-TW&ct=clnk&gl=hk) (http://a.com/search?q=cache:aNspmG11qAJ:hk.xyz.com/jobs2/view/16988928+&cd=2&hl=zh-TW&ct=cl k&gl=hk)

Intrare 2 (conține următoarele expresii regulate):

.*/view/(\\d+)([+|&|cd|)?]+)?
\/\/[^\x2f]+\.[a-z]{2}\/\d\/$
\/\/[^\?]+\.php\?[a-z]+=\d{3}_\d+$
\/\/[^\x3f]+\.php\?([a-z]+=[0-9]{2,3}&){5}[a-z]+=[0-9]{2,3}$)

Cerința mea este să potrivesc fiecare dintre aceste regiștri pentru a vedea dacă se potrivesc cu oricare dintre adresele URL din primul fișier de intrare (de la multe la multe).

Trebuie să scriu separat fiecare regișt folosind REGEX_EXTRACT_ALL sau există o modalitate mai bună de a face acest lucru? (Poate fi făcută prin încărcarea ambelor fișiere și folosind foreach/generate cu numele câmpului pentru regex în loc de exprimare reală ca mai jos?)

A = LOAD 'input1.txt' as line1;
B = LOAD 'input2.txt' as line2;
C = FOREACH A GENERATE REGEX_EXTRACT_ALL(line1,'B.line2');
dump C;
0
Înțeleg esele cu regex. Deși cerința folosește pur și simplu un fișier complet de regex multiplu pe un fișier complet de jurnale (URL-uri în acest caz). Voi primi fișierul aprobat cu regex corect, deci nu este o problemă. Dar am vrut să știu cum pot potrivi fiecare regex cu fiecare înregistrare de jurnal fără o buclă? Am nevoie de un UDF separat în Python sau ceva de genul ăsta?
adăugat autor dshah, sursa
Nu sunteți sigur ce încercați să faceți, dar aspectul regex-ului este problematic.Această /[^ \ x3f] + \ .php \? ([Az] + = [0-9] ) Expresia {5} [az] + = [0-9] {2,3} $) conține o paranteză neechilibrată la sfârșit. are \\ d + o evadare literala care inseamna escape egal cu plus multe d s. Acest [+ | & cd |)?] + este o clasă de caractere cu multe literali de alternanță. Folosiți \ d în unele locuri, [0-9] în altele, utilizați hex \ x2f cod> în clasele de caractere, atunci când un liter
adăugat autor sln, sursa

Răspunsuri nu sunt

0