porțiunea șablon poate fi inclus între paranteze (.). Asemenea părți izolate ale modelului sunt numite „expresie bracket“ sau „grupuri discontinue“.
În acest spin-off are două efecte:
- Acesta vă permite să selectați o parte dintr-un meci într-un singur element al matrice atunci când caută prin String # meci sau regexp # exec.
- Dacă pui un cuantificator după paranteze, acesta se va aplica întregului suport. și nu doar într-un singur caracter.
In exemplul de mai jos, șablonul (go) + este una sau mai multe repetarea „du-te“:
Fără paranteze, șablonul / deplasare + / ar însemna g. după care există una sau mai multe o. de exemplu: goooo. Guler „grupare» (go) împreună.
Parantezele sunt numerotate de la stânga la dreapta. Motor de căutare stochează conținutul fiecăruia dintre paranteze și permite accesul la acesta - în șirul de model și de înlocuire și, desigur, în rezultatele.
De exemplu, pentru a găsi HTML-tag-ul poate fi un șablon <.*?> .
După căutarea vrem să facem ceva cu rezultatul. Pentru comoditate încheie conținutul <.> în paranteze: <(.*?)>. Apoi, acesta va fi disponibil separat.
Atunci când căutați un # meci metoda String în matrice rezultată va fi inițial toată coincidență, și apoi - grup paranteză. şablonul <(.*?)> Suport doar un singur grup:
Rețineți că # corespund metodei String dă grup paranteză numai atunci când caută fără pavilion /. / G. In exemplul de mai sus este doar primul meci găsit nu este găsit, deoarece nici un pavilion /. / G se solicită doar primul meci.
Pentru a căuta și pavilion /. / G și colțar cu grupe folosind metoda RegExp # exec:
Aritmetică expresie compusă din cele două numere și operații între, de exemplu:
Lista de operațiuni: „+“. "-". "*" Și "/".
Pot exista, de asemenea, spații în jurul operatorului și numerele.
Scrieți o funcție care va primi expresia și returnează o matrice de trei argumente:
- Primul număr.
- Operator.
- Al doilea număr.
Expresia regulată pentru numărul de eventual fracționată și negativ: - (. \ \ D +) \ D +. Am demontat sarcinile sale anterioare.
Operator - o [- + * /]. Rețineți că cratima - vine mai întâi în listă, la fel ca în orice poziție, cu excepția prima și ultima, are o semnificație specială în interiorul [. ]. și ar trebui să fie analizate.
Avem nevoie de un număr, atunci operatorul, apoi numărul și decalaje opționale între ele.
expresie completă regulată prin urmare, va: - \ D + (\ \ d +.) \ S * [- + * /] \ s * - \ d + (\ \ d +.) ???.
Pentru a obține rezultatul ca o matrice, adăugați paranteze în jurul valorii de datele pe care ne interesează, adică - cu privire la numărul și operatorul: (-?.? \ D + (\ \ d +)) \ s * ([- + * /]) \ s * (-? \ d + (\ \ d +).?).
A se vedea-l în acțiune:
matrice totală va include componente:
- rezultat [0] == "1.2 + 12" (primul meci vreodata full)
- rezultat [1] == "1" (prima paranteză)
- rezultat [2] == "2" (a doua categorie -.? partea fracționară (\ \ d +))
- rezultat [3] == "+" (...)
- rezultat [4] == "12" (...)
- rezultat [5] == nedefinite (ultimul suport, dar al doilea din partea fracționară absent)
Noi din această matrice trebuie doar numărul și operatorul. Și, să zicem, partea fracționară de la sine - nu este necesară.
Uberom-l din depozitarea, adăugând la partea superioară a suporturilor. și anume: (:?. \ \ d +).