Jump to content

Pitona 'regular expressions'


Jurkins
 Share

Recommended Posts

Labs rīts!

A davai kaut ko ne par Baidenu un gejiem 😁.

Es saprotu, ka tupiju..., bet var kāds "populāri" apskaidrot, ko dara "?:"

print(re.match('[.]'.join(('(?:[0-9]{1,2}|[1][0-9]{2}|2[0-4][0-9]|25[0-5])',) * 4) + '$', '0.255.255.254'))

un

print(re.match('[.]'.join(('([0-9]{1,2}|[1][0-9]{2}|2[0-4][0-9]|25[0-5])',) * 4) + '$', '0.0.0.0'))

Rezultāts, manuprāt, ir pilnīgi tāds pats.

Ir, ir pilns nets ar skaidrojumiem, bet nu, mļaķ, nepielec.

  • Patīk 1
Link to comment
Share on other sites

Rezultāts būs vienāds, ja tikai jāpārbauda, ka ir/nav match. Tas nemainās vai būs tas ?: vai nē.

 

?: norāda, ka tam, kas iekavās, netiek veidota "matching grupa", lai, piemēram, nemaisās pa kājām potenciāliem look ahead/behind (piemēram, kaut kur regexp tālāk referencēt atpakaļ uz iepriekš matchotām iekavām - ar \1, \2, utt)

 

Labāk varētu izskaidrot šis PHP kods:

<?php

$text = "aabbcc";

preg_match_all("/(aa)(?:bb)(cc)/", $text, $match);
print_r($match);

 

$match masīvs saturēs tikai aa un cc.

 

Ja noņemsi ?:, tad būs masīvā būs arī bb.

 

  • Patīk 2
Link to comment
Share on other sites

Jā, šis ir labs. Vakar vakarā jau biju uzbridis uz šamā no viena habr.ru raksta. Bet pirmo reizi nesapratu. Tagad sāku iebraukt.

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...