[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: regex tutorial vraag



Hoi!

Bedankt voor jullie reacties.

Lijkt erop dat de perl regexes gebruikt worden op regextutorials.com, en die werken ook met grep -P.

Ik denk dat mn vraag eigenlijk was: welke van die regex varianten zou nu het handigst zijn om je in te verdiepen. Ik heb nu gekozen voor de perl variant.

Bedankt!

MJ

Op 15-09-2021 om 22:05 schreef Geert Stappers:
On Wed, Sep 15, 2021 at 01:33:02PM +0200, Martijn van de Streek wrote:
mj schreef op wo 15-09-2021 om 12:44 [+0200]:

Op bijvoorbeeld http://regextutorials.com/ leren ze je dat \w hele
woorden matcht, \d voor decimals, etc. (en nog veel veel zulke
handige shortcuts)


\w matcht "word characters" (niet hele woorden). Wat dat precies
betekent is afhankelijk van je locale/taalinstellingen en het programma
waarmee je de regex match doet.

In sommige locales kan "\w" naast "a-zA-Z" ook tekens als "ë" of zelfs
"и" matchen en "\d" tekens als "٣".

Op alle andere tutorials die ik vind is dat helemaal anders,

Begrijpelijk


en lijkt
de backslash vooral een escape character om bv een letterlijke PUNT
('\.') te matchen, en dat is ook wat ik merk als ik het test met
"grep -E"

Kan iemand van hier daar iets zinnigs over zeggen..?

"\" is over het algemeen inderdaad een escape-character, maar alleen
voor niet-letters. Veel "\ + letter"-combinaties hebben zulke speciale
betekenissen.

Kan iemand me een site aanraden (a la regextutorials.com) die ik zou
kunnen gebruiken om regex zoals bv "grep -E" ze gebruikt te
leren/oefenen?

Voor echt grondige kennis (en naslag) kan ik "Mastering Regular
Expressions" van Jeffrey Friedl aanraden (ISBN: 978-0-596-52812-6)

Daarnaast ben ik zelf vooral bekend met de handleidingen van Perl. Die
beschrijven de "Perl-smaak" van regex (je kunt "grep" vragen om Perl-
stijl regex te gebruiken dmv. "grep -P" - dit gebruikt "PCRE", Perl-
Compatible Regular Expressions):

Daar staat eigenlijk
dat grep meerdere "Regular Expression Engines" heeft.
$ perldoc perlretut
$ perldoc perlre
$ perldoc perlrebackslash

De basis van de meeste regex-dialecten is vrijwel hetzelfde,

Inderdaad, er zijn meerdere regex-dialecten.


dus de
kennis die je hieruit haalt is over het algemeen 1 op 1 toepasbaar voor
"grep -E". De verschillen zitten vooral in hoeveel en waar je moet
escapen en in complexere/nieuwere features zoals "negative zero-width
look-ahead".

Yep, er zijn verschillen.
En als je dat niet weet (als verwacht "allemaal hetzelfde")
dan kan het je akelig opbreken.

Zoals Martijn zegt: Basis van regex is hetzelfde.


Groeten
Geert Stappers



Reply to: