grup de paranteze

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:

  1. 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.
  2. 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:

  1. Primul număr.
  2. Operator.
  3. Al doilea număr.
decizie

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 +).

articole similare