15,911 matches
-
mai sus într-o reprezentare internă care poate fi executată și comparată cu un reprezentând textul în care se caută. O abordare posibilă este cea a pentru a construi un (AFN), care este apoi și -ul rezultat este rulat pe șirul de text pentru a recunoaște cuvinte care se potrivesc cu expresia regulată. Imaginea prezinta schema AFN " N"("s"codice 9) obținută din expresia regulată "s"codice 9, unde "s" reprezintă la rândul său o expresie regulată mai simplă, care a fost deja
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
altora, inclusiv Perl și ECMAScript. Implementările funcționalităților regex sunt adesea numite motoare regex, și există mai multe biblioteci disponibile pentru reutilizare. O expresie regulată, de multe ori numită șablon (pattern), este o expresie folosită pentru a specifica o mulțime de șiruri de caractere necesară pentru un anumit scop. Un mod simplu de a specifica o mulțime finită de șiruri de caractere este de a enumera elementele sale. Cu toate acestea, există de multe ori moduri mai concise de a specifica mulțimea
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
disponibile pentru reutilizare. O expresie regulată, de multe ori numită șablon (pattern), este o expresie folosită pentru a specifica o mulțime de șiruri de caractere necesară pentru un anumit scop. Un mod simplu de a specifica o mulțime finită de șiruri de caractere este de a enumera elementele sale. Cu toate acestea, există de multe ori moduri mai concise de a specifica mulțimea dorită de șiruri de caractere. De exemplu, mulțimea ce conține trei șiruri de caractere "Handel", "Händel", și "Haendel
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
necesară pentru un anumit scop. Un mod simplu de a specifica o mulțime finită de șiruri de caractere este de a enumera elementele sale. Cu toate acestea, există de multe ori moduri mai concise de a specifica mulțimea dorită de șiruri de caractere. De exemplu, mulțimea ce conține trei șiruri de caractere "Handel", "Händel", și "Haendel" poate fi specificată de șablonul codice 12; spunem că acest șablon se potrivește pe fiecare dintre cele trei șiruri de caractere. În cele mai multe formalisme, dacă există
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
a specifica o mulțime finită de șiruri de caractere este de a enumera elementele sale. Cu toate acestea, există de multe ori moduri mai concise de a specifica mulțimea dorită de șiruri de caractere. De exemplu, mulțimea ce conține trei șiruri de caractere "Handel", "Händel", și "Haendel" poate fi specificată de șablonul codice 12; spunem că acest șablon se potrivește pe fiecare dintre cele trei șiruri de caractere. În cele mai multe formalisme, dacă există cel puțin o expresie regulată care se potrivește cu
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
concise de a specifica mulțimea dorită de șiruri de caractere. De exemplu, mulțimea ce conține trei șiruri de caractere "Handel", "Händel", și "Haendel" poate fi specificată de șablonul codice 12; spunem că acest șablon se potrivește pe fiecare dintre cele trei șiruri de caractere. În cele mai multe formalisme, dacă există cel puțin o expresie regulată care se potrivește cu o anumită mulțime, atunci există un număr infinit de alte expresii regulată care se potrivesc—specificația nu este unică. Cele mai multe formalisme oferă următoarele operațiuni
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
pentru a construi expresii regulate. Aceste construcții pot fi combinate pentru a forma expresii arbitrar de complexe, așa cum se pot construi expresii aritmetice din numerele și operațiile +, −, ×, ÷. De exemplu, codice 17 și sunt ambele șabloane valabile care se potrivesc cu aceleași șiruri ca în exemplul anterior, codice 12. Sintaxa exactă a expresiilor regulate variază de la instrument la instrument și de la context la context; mai multe detalii sunt furnizate în secțiunea "Sintaxă". Expresiile regulate descriu limbaje regulate în teoria limbajelor formale. Ele au aceeași
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
și de la context la context; mai multe detalii sunt furnizate în secțiunea "Sintaxă". Expresiile regulate descriu limbaje regulate în teoria limbajelor formale. Ele au aceeași putere expresivă ca și . Expresiile regulate constau din constante și operatori care notează mulțimi de șiruri de caractere și, respectiv, operațiuni efectuate pe aceste mulțimi. Următoarea definiție este una standard, găsită ca atare în majoritatea manualelor de limbaje formale. Dat fiind un Σ finit, următoarele constante sunt, prin definiție, expresii regulate: Date fiind expresiile regulate R
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
regulate este intenționat minimală și evită definirea cuantificatorilor redundanți codice 14 și codice 16, care pot fi exprimați după cum urmează: codice 30 = codice 31, și codice 32 = codice 33. Uneori, se adaugă și operatorul pentru a da o "expresie regulată generalizată"; aici "R" se potrivește cu șirurile de caractere peste Σ* care nu se potrivesc cu "R". În principiu, operatorul complement este redundant, deoarece rezultatul lui se poate obține cu ajutorul altor operatori. Cu toate acestea, procesul de calcul al unei astfel de reprezentări este complex, iar rezultatul
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
diferență semnificativă de compactitate. Unele clase de limbaje regulate pot fi descrise numai prin automate finite deterministe a căror dimensiune crește exponențial în funcție de dimensiunea celei mai scurte expresii regulate echivalente. Exemplul standard îl constituie aici limbajele "L" formate din toate șirurile de caractere peste alfabetul {"a","b"} al căror literă la indicele "k" de la dreapta este egal cu "a". Pe de o parte, o expresie regulată care descrie "L" este dată de <math />. Generalizând acest șablon la "L" rezultă expresia: <math
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
de simple sunt expresiile regulate, nu există nicio metodă sistematică de a le rescrie într-o formă normală. Lipsa de axiome în trecut a condus la . În 1991, a axiomatizat expresiile regulate cu . Un șablon regex se potrivește cu n șir țintă. Modelul este compus dintr-o secvență de "atomi". Un atom este un singur punct în modelul regex care încearcă să se potrivească cu șirul țintă. Cel mai simplu atom este un literal, dar gruparea unor părți din șablon pentru
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
la . În 1991, a axiomatizat expresiile regulate cu . Un șablon regex se potrivește cu n șir țintă. Modelul este compus dintr-o secvență de "atomi". Un atom este un singur punct în modelul regex care încearcă să se potrivească cu șirul țintă. Cel mai simplu atom este un literal, dar gruparea unor părți din șablon pentru a se potrivi cu un atom necesită folosirea codice 34 ca metacaractere. Metacaracterele ajută la formarea: "atomilor"; "cuantificatorilor" care spun câți atomi (și dacă cuantificatorul este
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
nu); un caracter SAU logic, care oferă un set de alternative, un caracter NU logic, care neagă existența unui atom; și "backreferences" ca referințe la atomi anteriori ai unui șablon de atomi. Potrivirea se face nu atunci când toți atomii din șir sunt potriviți, ci mai degrabă atunci când toții atomii din șablon s-au potrivit. Ideea este de a face ca șabloane mici de caractere să suporte un număr mare de șiruri de caractere posibile, mai degrabă decât să se compileze o
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
de atomi. Potrivirea se face nu atunci când toți atomii din șir sunt potriviți, ci mai degrabă atunci când toții atomii din șablon s-au potrivit. Ideea este de a face ca șabloane mici de caractere să suporte un număr mare de șiruri de caractere posibile, mai degrabă decât să se compileze o listă lungă a tuturor literalilor posibili. În funcție de procesorul regex, există aproximativ paisprezece metacaractere, caractere care pot sau nu să aibă sensul lor , în funcție de context, sau dacă acestea sunt „escapate”, adică
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
comune le implementează pe ambele. De obicei, metacaractere sunt codice 38 și codice 35. Caracterele care devin de obicei devin metacaractere când sunt escapate sunt codice 40codice 41 și codice 42. Atunci când se introduc regexuri într-un limbaj de programare, ele pot fi reprezentate ca șiruri de caractere obișnuite, prin urmare, de obicei, între ghilimele; acest lucru este comun în C, Java, Python, de exemplu, unde regexul codice 43 este introdus ca codice 44. Cu toate acestea, ele sunt adesea scrise cu slash-uri ca , adică codice 45 reprezintă regexul
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
unde căutarea și înlocuirea sunt date de codice 50 și șabloanele pot fi concatenate prin virgulă pentru a specifica mai multe rânduri, ca codice 51. Această notație este deosebit de bine-cunoscută datorită utilizării sale în Perl, de unde formează parte a sintaxei diferite de șirurile de caractere literale normale. În unele cazuri, cum ar fi sed și Perl, se pot folosi delimitatori alternativi pentru a evita coliziunea cu conținutul, și pentru a evita necesitatea escapării apariției delimitatorului în conținut. De exemplu, în sed comanda codice 52
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
cu utilitarele Unix moderne prin activarea flagului de linie de comandă -E. Clasa de caractere este cel mai de bază concept al regexurilor după cel de literal. El face ca o secvență scurtă de caractere să se potrivească cu un șir mai mare. De exemplu, codice 85 ar putea reprezenta întreg alfabetul majusculelor, iar codice 86 ar putea însemna orice cifră. Clasele de caractere se aplică la ambele niveluri POSIX. Atunci când se specifică un interval de caractere, cum ar fi codice 87 (adică literele
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
extensiile sintactice inițial dezvoltate în și Python. În Python și în alte implementări (de exemplu, Java), cei trei cuantificatori fecvenți (codice 9, codice 16 și codice 14) sunt implicit , deoarece aceștia se potrivesc cu cât mai multe caractere posibil. Regexul codice 98 aplicat asupra șirului se potrivește cu întreaga linie în loc a se potrivi doar cu codice 99. Cuantificatorii menționați pot fi făcuți și sau sau , așa încât să potrivească cât mai puține caractere posibil, astfel, prin adăugarea unui semn de întrebare: codice 100 șablonul de mai sus
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
identifică doar codice 99. În Java, cuantificatorii poate fi făcuți prin adăugarea unui semn plus, care dezactivează pașii înapoi în algoritmul backtracking de parcurgere a automatului, chiar dacă acești pași ar face să se găsească o potrivire: Deși regexul codice 98 aplicat pe șirul se potrivește cu întreaga linie, regexul codice 103 , pentru că codice 104 consumă întreaga intrare, inclusiv codice 105 de la sfârșit. Astfel, cuantificatorii posesivi sunt cele mai utili cu clase de caractere negate, de exemplu cu codice 106, care se potrivește cu codice 99 atunci când este aplicat
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
cu întreaga linie, regexul codice 103 , pentru că codice 104 consumă întreaga intrare, inclusiv codice 105 de la sfârșit. Astfel, cuantificatorii posesivi sunt cele mai utili cu clase de caractere negate, de exemplu cu codice 106, care se potrivește cu codice 99 atunci când este aplicat pe același șir. Cuantificatorii posesivi sunt mai ușor de implementat decât cei "greedy" și "lazy", și sunt de obicei mai eficienți la "runtime". Multe caracteristici găsite în aproape toate bibliotecile moderne de expresii regulate oferă o putere expresivă care depășește pe cea a
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
care depășește pe cea a [[Limbaj regulat|limbajelor regulate]]. De exemplu, multe implementări permit gruparea subexpresiilor cu paranteze și reapelarea valorii care s-a potrivit deja în cadrul aceleeiași expresii (""). Acest lucru înseamnă că, printre alte lucruri, un șablon poate compara șiruri de cuvinte repetate ca „papa” sau „WikiWiki”, numite în teoria limbajelor formale "pătrate". Șablonul pentru aceste șiruri de caractere este codice 108. Limbajul pătratelor nu este regulat, și nici [[Limbaje independente de context|independent de context]], din cauza . Cu toate acestea, cu
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
paranteze și reapelarea valorii care s-a potrivit deja în cadrul aceleeiași expresii (""). Acest lucru înseamnă că, printre alte lucruri, un șablon poate compara șiruri de cuvinte repetate ca „papa” sau „WikiWiki”, numite în teoria limbajelor formale "pătrate". Șablonul pentru aceste șiruri de caractere este codice 108. Limbajul pătratelor nu este regulat, și nici [[Limbaje independente de context|independent de context]], din cauza . Cu toate acestea, cu un număr nelimitat de backreference-uri, așa cum este suportată de numeroase instrumente moderne, este încă . Cu toate acestea
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
găsirea între fragmentul de text și șablon. Această sarcină este strâns legată de și . Unele lucrează cu regexuri fuzzy: Există cel puțin trei tipuri diferite de [[Algoritm|algoritmi]] care decid dacă și cum se potrivește un anumit regex cu un șir de caractere. Cea mai vechi și mai rapidă se bazează pe un rezultat din teoria limbajelor formale, care permite ca fiecare (AFN) să fie transformat într-un (AFD). AFD-ul poate fi construit în mod explicit și apoi executat pe
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
de caractere. Cea mai vechi și mai rapidă se bazează pe un rezultat din teoria limbajelor formale, care permite ca fiecare (AFN) să fie transformat într-un (AFD). AFD-ul poate fi construit în mod explicit și apoi executat pe șirul de intrare simbol cu simbol. Construirea AFD pentru o expresie regulată de dimensiune "m" are complexitatea în timp și spațiu (2), dar poate fi rulată pe un șir de caractere de dimensiune "n" într-un timp "O"("n"). O abordare
Expresie regulată () [Corola-website/Science/317028_a_318357]
-
AFD-ul poate fi construit în mod explicit și apoi executat pe șirul de intrare simbol cu simbol. Construirea AFD pentru o expresie regulată de dimensiune "m" are complexitatea în timp și spațiu (2), dar poate fi rulată pe un șir de caractere de dimensiune "n" într-un timp "O"("n"). O abordare alternativă este aceea de a simula AFN-ul direct, construind practic la cerere fiecare stare a AFD-ului și apoi renunțând la ea în pasul următor. Acest lucru
Expresie regulată () [Corola-website/Science/317028_a_318357]