Tutorial Regex - Alternare cu bara verticală

Am explicat deja cum puteți utiliza clasele de caractere pentru a se potrivi un singur personaj din mai multe caractere posibile. Alternanța este similară. Puteți utiliza alternanța pentru a potrivi o singură expresie regulată din mai multe expresii regulate posibile.

tutorial

Dacă doriți să căutați textul literal pisică sau câine, separați ambele opțiuni cu o bară verticală sau un simbol pipă: pisică | câine. Dacă doriți mai multe opțiuni, pur și simplu extindeți lista: cat | câine | mouse | peşte .

Operatorul de alternanță are cea mai mică prioritate dintre toți operatorii regex. Adică, îi spune motorului regex să se potrivească fie cu totul în stânga barei verticale, fie cu totul în dreapta barei verticale. Dacă doriți să limitați acoperirea alternanței, trebuie să utilizați paranteze pentru grupare. Dacă dorim să îmbunătățim primul exemplu pentru a se potrivi doar cuvinte întregi, ar trebui să folosim \ b (pisică | câine) \ b. Acest lucru îi spune motorului regex să găsească o limită de cuvânt, apoi fie pisică sau câine, și apoi o altă limită de cuvânt. Dacă am fi omis parantezele, atunci motorul regex ar fi căutat o limită de cuvânt urmată de pisică sau câine urmată de o limită de cuvânt.

Amintiți-vă că motorul Regex este dornic

Am explicat deja că motorul regex este dornic. Oprește căutarea imediat ce găsește o potrivire validă. Consecința este că, în anumite situații, ordinea alternativelor contează. Să presupunem că doriți să utilizați o regex pentru a se potrivi cu o listă de nume de funcții într-un limbaj de programare: Get, GetValue, Set sau SetValue. Soluția evidentă este Get | GetValue | Set | SetValue. Să vedem cum funcționează acest lucru când șirul este SetValue .

Motorul regex pornește de la primul simbol din regex, G și de la primul caracter din șir, S. Meciul eșuează. Cu toate acestea, motorul regex a studiat întreaga expresie regulată înainte de a porni. Deci, știe că această expresie regulată folosește alternanța și că întreaga regex nu a eșuat încă. Deci, continuă cu a doua opțiune, fiind al doilea G din regex. Meciul eșuează din nou. Următorul simbol este primul S din regex. Meciul reușește, iar motorul continuă cu următorul caracter din șir, precum și cu următorul simbol din regex. Următorul simbol din regex este e după S care tocmai s-a potrivit. e meciuri e. Următorul simbol, t se potrivește cu t .