Ajutor: expresii regulate

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Abrevieri
WP: Regex

Scopul acestei pagini de ajutor este de a rezuma pe scurt sintaxa care va fi utilizată la crearea algoritmilor pentru înlocuirea automată a textului (corecturi ortografice, corecții stilistice etc.) în paginile Wikipedia.

Instrucțiuni

Tipurile pot fi raportate folosind formalismul expresiei regulate ( regex ), care vă permite să rezumați cuvintele scrise greșit și corecțiile acestora. Cel mai imediat mod de a crea o listă de expresii este următorul

(expr1 | expr2 | ... exprN) expr

în esență, instrumentul caută în text toate aparițiile expresiilor N declarate (adică expr1expr , expr2expr etc.) și efectuează operația asociată, care ar putea fi, de exemplu, înlocuirea acelor apariții cu o valoare predefinită. Dacă expresiile sunt caractere simple, se poate folosi o scriere mai concisă

[char1char2 ... charN] expr

scrierea opusă este următoarea

[^ char1char2 ... charN] expr

și forțează căutarea în text a tuturor aparițiilor expresiilor de tip char # expr , unde char # este orice alt caracter decât char1 , char2 etc. Rețineți că o expresie nu trebuie să fie un caracter sau un șir de text, poate fi și o listă în sine. De exemplu, scrierea

(a | [bc])

este legal și este echivalent cu [abc] , adică cu toate aparițiile literelor a , b și c . În mod similar, cunoașterea (Ric | [Cc]) corespunde cuvintelor Recunoaștere , Cunoaștere și cunoaștere .

Cuantificatoare

În plus față de metodele menționate anterior, există diverse cuantificatoare care vă permit să simplificați scrierea listelor.

Un cuantificator este un simbol care merge în dreapta unei expresii date și generează o listă de expresii. Prin convenție, un cuantificator operează pe caracterul precedent sau pe secvența de evadare .

Principalii cuantificatori sunt

  • ? ( zero sau unu ) indică faptul că expresia la care se referă poate să nu fie nici măcar prezentă. În practică, scrierea expr? este echivalent cu (| expr) (rețineți că primul câmp este o expresie goală, care corespunde caracterului gol)
  • * ( zero sau unele ) reprezintă faptul că expresia la care se referă poate să nu fie prezentă sau să fie prezentă de una sau de mai multe ori. expr * este deci echivalent cu (| expr | exprexpr | exprexprexpr | ...)
  • + ( una sau unele ) reprezintă faptul că expresia la care se referă poate fi prezentă de una sau mai multe ori. expr + este deci echivalent cu scrierea expresiei (expr | exprexpr | exprexprexpr | ...)

Mai mult, notația {n, m} care urmează unui caracter sau o paranteză de închidere, în care n reprezintă „repetat de cel puțin n ori”, iar m reprezintă „repetat de cel mult m ori”, poate fi utilă.

Cuantificatoarele, în mod implicit, sunt lacome , ceea ce înseamnă că atunci când sunt folosite pentru a găsi o expresie într-un text, tind să o găsească pe cea mai lungă posibilă. De exemplu, regexul b + din textul bbbbbbbbbbB găsește șirul bbbbbbbbbb , în timp ce regexul (B | b) + găsește șirul bbbbbbbbbbB .
Dar pot fi leneși făcându-i urmați de semnul întrebării ? : În acest fel, regex bb + b → c în textul obișnuit se va opri la cel mai scurt posibil expresie, care este alcătuit din toate grupurile formate din trei bs consecutive, revenind CCCB. Acest lucru este în mod evident echivalent cu ceea ce face regex bbb → c ; utilizarea modului leneș devine convenabilă atunci când este utilizată de exemplu împreună cu formatarea caracterelor .

Exemple
  • find = "\ bAccell? erazzione \ b" replace = "acceleration" în text toate aparițiile Accelerazzione și Accellerazzione și le înlocuiește cu termenul corect Acceleration
  • find = "\ bAccell? ra + ion \ b" replace = "Acceleration": efectuează aceeași operație ca înainte, dar corectează și cuvinte precum Acceleration, Accellerazzzione etc.
  • z {3} găsește litera „z” repetată exact de 3 ori
  • z {3,} identifică litera „z” repetată de cel puțin 3 ori
  • z {3,6} identifică litera „z” repetată între 3 și 6 ori

Notă : \ b indică o limită de cuvânt , adică un limitator de cuvinte și nu trebuie rescrisă în câmpul de înlocuire (este reprodus automat), care, în general, nu acceptă formatarea caracterelor .

Secvențe de evadare

Parantezele rotunde nu sunt niciodată interpretate ca caractere, deoarece sunt folosite pentru a defini secvența de evadare , adică seturi de caractere și operatori așa cum ar putea fi scrisul ((a | b) [cd] f?) , Corespunzător șirurilor de text acf adf bcf bdf ac ad bc bd . Dacă în schimb doriți să utilizați paranteze (și, în general, orice caracter special, cum ar fi ^ ,? Sau paranteze pătrate) ca caractere de căutat în text, faceți-le să le preceadă cu caracterul „ backslash ”, deci \ ( , \ ) (cfr. paragraful Căutarea simbolurilor speciale ).

Toate secvențele de evacuare sunt numerotate automat și pot fi apoi invocate cu simbolul $ # (unde # = 1,2 ... ) atunci când se specifică corecția care trebuie efectuată. Numerotarea se desfășoară de la exterior la interior și de la stânga la dreapta; de exemplu

(către | (b | c) | (d | e) ) (s | (f | (d | 8) ) )
1 4
2 3 5
6

dacă intenționați să preveniți numerotarea unei paranteze, deoarece nu intenționați să o reamintiți, trebuie să introduceți simbolul ?: după primul

(către | (b | c) | (?: d | e) ) (s | (f | (d | 8) ) )
1 3
2 4
5
Exemple
  • find = "\ b (A | a) ccellerare \ b" replace = "$ 1ccelerare" în text toate aparițiile Expediting și accelerare și accelerare și accelerare înlocuiește
  • find = "\ b (A | a) ccellera (re | tion) \ b" replace = "$ 1 accelerează $ 2" : aceeași corecție ca înainte, dar funcționează și la substantivul corespunzător
  • find = "\ b (A | a) cce (?: l +) era (?: zz? ion) \ b" replace = "$ 1 accelerare" : acest cod corectează multiplele l și dublele z
  • find = "(E | e) f (f?) icente" replace = "$ 1f $ 2iciente" : înlocuiți cuvinte precum eficient și deficient cu termenii corecți ( eficient și deficient )

Notă : Dacă doriți să apelați expresia [char1char2 ... charN] sau [^ char1char2 ... charN] , trebuie să o puneți între paranteze. În primul caz, este posibil, într-adevăr preferabil, să simplificați notația scriind (char1 | char2 | ... charN) în loc de ([char1char2 ... charN]) .

Uită-te in jur

Uită-te in jur Priveste inainte Uita-te in spate
Pozitiv (? <=) (? =)
Negativ (? <!) (?!)

O altă modalitate de utilizare a secvențelor de evacuare este funcția lookaround , care vă permite să excludeți unele piese din înlocuire. Se obține făcând câteva caractere să urmeze semnul întrebării, după cum urmează

find = "(? <= expr1) expression (? = expr2)" replace = "new expression" : înlocuiți expresia cu expresie nouă , dar numai dacă prima este între expr1 și expr2 ( lookaround pozitiv )
find = "(? <! expr1) expression (?! expr2)" replace = "new expression" : înlocuiește expresia cu expresie nouă , dar numai dacă prima nu este precedată de expr1 și nici urmată de expr2 ( lookaround negativ )

este evident posibil să combinați priviri pozitive și negative între ele și să le utilizați individual pentru a preceda sau urmări expresia care trebuie înlocuită.

Cuantificatoare și secvențe de evadare

Un cuantificator funcționează întotdeauna pe caracterul precedent sau pe secvența de evadare. Dacă acesta din urmă este reamintit, valoarea returnată corespunde întotdeauna ultimului caracter stocat, procedând de la stânga la dreapta. De exemplu, regexul (B | b) + → $ 1 înlocuiește șirul bbbbbbbbbbB cu caracterul B.

Exemple
  • find = "(Q | q) +" replace = "$ 1" : înlocuiți toate literele mai mari sau mici repetate q cu un singur caracter [1]

Formatarea caracterelor

  • \ n găsiți o linie nouă
  • \ t se potrivește cu un caracter tab
  • \ r identifică o retur de transport
  • . identifică un caracter generic, cu excepția returnării transportului. Meciul de returnare a transportului poate fi activat în continuare prin specificarea modului single-line
  • \ b limitator de cuvinte
  • \ B se potrivește cu orice caracter care nu este un limitator de cuvinte
  • \ s se potrivește cu un caracter de spațiu alb (spațiu, \ n , \ t sau \ r )
  • \ S se potrivește cu orice caracter care nu este spațiu alb
  • \ w se potrivește cu un caracter de cuvânt (literă, cifră sau subliniere )
  • \ W se potrivește cu orice alt caracter decât un cuvânt
  • \ D indentifică o cifră (0 la 9)
  • \ D se potrivește cu orice caracter fără cifre
  • - inserat între două caractere (litere sau cifre) și între paranteze pătrate (de exemplu [AH] ) identifică orice caracter care este inclus în intervalul dintre cele de mai sus (notația [A-Ha-h] este, de asemenea, permisă)
  • \ p {nume} identifică un singur caracter inclus în blocul denumit sau în categoria generală Unicode specificată în „nume” (de exemplu. \ p {IsCyrillic} identifică un caracter al alfabetului chirilic)
  • \ P {nume} se potrivește cu un singur caracter care nu este inclus în blocul numit și nici în categoria generală Unicode specificată în „nume”

Căutați simboluri speciale

Dacă un text special este inclus în text de căutat, este suficient să îl precedeți cu o „ bară inversă ” pentru a-l pierde din funcția de caracter de formatare. De exemplu, dacă doriți să căutați "FIGC", scrieți doar find = "F \ .I \ .G \ .C \." iar punctul nu va mai indica un caracter generic, dar va indica exact și doar plin de oprire caracter.

Acestea sunt caracterele care trebuie neapărat să fie precedate de „ backslash ” pentru a fi căutate ca atare:

. "[] () \ / |? * + # ^ $

Cu toate acestea, pentru a evita ambiguitatea cu limbajul regex, se recomandă utilizarea acestei metode de căutare chiar și atunci când doriți să căutați unul dintre următoarele caractere:

, {} -! <=:

Notă

  1. ^ Această corecție este întotdeauna bună în italiană, cu singura excepție a cuvântului soqquadro

Pagini conexe

linkuri externe