Prisijungti

regex ir IF

  • 7 Bal '12

Sveiki.

Štai mažas kodo gabaliukas ir iškart error'as:

str1 = 'an example word: cat!!'
str2 = 'an example word: dog!!'
if re.search('cat', str1) & re.search('dog', str2) : print('Surado!')
TypeError: unsupported operand type(s) for &: '_sre.SRE_Match' and '_sre.SRE_Match'

Kaip į IF'ą sukišti dvi regex užduotis?
Su viena veikia be problemų, su dviem niekaip nenori, tik nesuprantu ir nerandu kodėl..

  • 7 Bal '12

Pats radau sprendimą su funkcija all():

if all((re.search(r'cat', str1) , re.search(r'dog', str2))) : print('Surado!')

Visgi šitas metodas veiksmingas tik tuo atveju, jei visos regex užduotys tariamai jungiamos 'AND' operatoriumi. O ką daryti, jei reikia panaudoti vieną ar daugiau 'OR'?

Pakomentuokit kas nors, turintis didesnį Python žinių kraitį.

  • 8 Bal '12

Na o kaip del paprasto "and", arba "or"?
Cia juk pythonas, bet kokiu atveju & programavimo kalbose rodos naudojamas kaip operatorius darbui su bitais.

if (re.search('cat', str1) and True or re.search('dog', str2)) : print('Surado!')
  • 9 Bal '12

Hmm.. Nors tavo pavyzdys ir nesužavėjo, visgi užvedė ant kelio (: Pasirodo viskas puikiai veikia su paprasčiausiu and:

if (re.search(r'cat', str1)) and (re.search(r'dog', str2)) : print('Surado!')

Man čia turbūt palikimas iš PHP, mat ten nėra skirtumo, kaip užrašomas loginis operatorius: and, AND ar &&..

Tema baigta.