Updates ad Bash order versus acie

N
Netooze
January 31, 2020

RegEx (vel RegExp) characterum copia est quae exemplar investigationis definiunt. Operationes invenire et reficere possunt, ac condiciones ad reprimendam sicut consilium ignoro, numerus telephonicus introitus, et sic porro.

En exemplum regularis locutionis:

/t[aeiou]l/

Haec regularis expressio verbum spectabit quod incipit a littera 't', quamlibet litteram 'aeio u' in medio habet, et desinit litteram 'l'. Potest esse 'tel' vel 'tal' vel 'til'. Par unum verbum potest esse vel pars verbi alterius, ut 'pensio', 'ferum' vel 'telephonum'.

Nunc, exemplo Bash teste, praecipuas expressiones regulares inspiciamus.

Regular expressio basics

Syntaxis generalis pro imperio "grep" talis est;

$ grep поисковый_запрос_regex расположение_файла

Inspice aliquas speciales notas quas metacharacteres notas inspiciamus. Auxiliatur ad creandum expressiones magis implicatas quaerendi:

. cuivis ingenio par erit;
[] characterum latitudine par erit;
[^] omnibus characteribus aequabunt exceptis capreolis crispis specificatis;
* cuilibet numerorum characterum asterisco antecedenti par erit, etiam nullus;
+ congruit unum vel plures locutiones ante eam;
? par nulla vel una locutionum ante eam;
{n} par erit 'n' repetitiones praecedentium locutionum;
{n,} par certe 'n' repetitionibus praecedentium locutionum;
{nm} par erit certe 'n' ac maxime 'm' repetitiones praecedentium locutionum;
{,m} 'm' praecedentium vocum repetitiones vel ad summum aequabunt;
Est mores effugium (effugium character) usus est cum unus e metacharacteribus includi debet.

Hic sunt aliqua exempla:

. (punctum)

Adhibetur cuilibet characteri congruit qui in interrogatione quaestionis apparet. Exempli gratia uti possumus dot as:

$ grep "d.g" file1

Haec expressio regularis significat quod quaerimus verbum quod incipit ab 'd', terminatur cum 'g' et potest continere aliquem characterem in medio fasciculi nomine 'file1'. Similiter charactere puncto aliquoties uti possumus ad exemplum quaerendi nostrum, sicut sic:

T......h

Hoc vocabulum quaerendi quaerens verbum quod ab 'T' incipit, terminatur ab 'h' et quaelibet sex characteres in medio continere potest.

[]

Uncis quadratis characterum notis definiendis adhibentur. Verbi gratia, cum quaerere debes unum characterum recensatorum, et non aliquem characterem, ut in casu punctorum;

$ grep "N[oen]n" file2

Hic quaerimus verbum quod incipit ab 'N', desinit cum 'n' et solum 'o', 'e' vel 'n' in medio habere potest. Quibuslibet notis uti potes in uncis quadratis. Ordinationes quoque definire possumus ut 'ae' vel '1-18' ut indicem iunctarum characterum congruentium.

[^]

Hoc simile est cum negatione operator pro expressionibus regularibus. Usura [^] significat investigationem omnes characteres includere nisi in uncis quadratis. Exempli gratia:

$ grep "St[^1-9]d" file3

Hoc significat quod omnia verba habere possumus quae ab "St" incipiant, desinunt ab "d", nec digitos 1 ad 9 continent.

Hactenus exempla expressionum regularium usi sumus quae unicum exspectemus characterem. Sed quid in reliquis? Exempli gratia, si omnia verba a charactere incipientia vel desinentia invenire vis, vel quotcunque notas in medio continere. Hoc negotium pertractatur a characteribus meta-phys sic dictis quantificantibus, qui determinant quotiens expressio praecedentis fieri potest: + * & ?

{n}, {nm}, {n, } vel { ,m} exempla etiam aliarum quantitatum verbis regularibus uti possumus.

* (asterisk)

Hoc exemplum ostendet quotcunque casus litterae 'k', nullos addito;

$ grep "lak*" file4

Hoc modo congruit 'lacus' vel 'la' vel 'lakkkkk'.

+

Hoc exemplum requirit saltem unum eventum litterae 'k' in filo ad aequandum;

$ grep "lak+" file5

Hic littera "k" semel saltem apparere debet, unde eventus nostri esse potest 'lacus' vel 'lakkkkk', non autem 'la'.

?

In sequenti template, fiet chorda bb vel bab;

$ grep "ba?b" file6

Datis quantitatis '?' unum aut nullum habere possumus eventum.

Momenti note! Dicamus nos habere expressionem regularem;

$ grep "S.*l" file7

Et consequitur "Parvus", "Stultitia", et "Susan pila parva ludere". Sed quare "Susan parum pila ludere" pervenimus, cum tantum verba quaerebamus et non plenam sententiam?

Res est, haec sententia criteria quaestionis nostrae respondet: incipit a littera 'S', quotlibet notas in medio habet, et cum littera 'l' terminatur. Quid igitur faciamus regex nostrum figere ut tantum verba pro integris sententiarum output accipiamus.

Ad hoc quantitatis adde '?' to the regular expression:

$ grep "S.*?l" file7

aut effugium mores

Character enim adhibetur quando necessarium est ad characterem comprehendendum, qui metacharacter est vel specialem significationem habet ad expressionem regularem. Exempli gratia, omnia verba cum puncto desinentia invenire vis. Hacc dictione uti possumus :

$ grep "S.*?." file8

Quaeret et aequat omnia verba quae cum puncto finiunt.

Ita fundamentalem intellectum habes quomodo expressiones regulares operantur. Exerc, quantum fieri potest, expressiones regulares crea et eas in tuo opere quam saepissime includere conare. Potes inspicere rectitudinem utendi tuis expressionibus regularibus in speciali exemplo in speciali site .

Satus nubes iter tuum? Primum gradum nunc accipe.