Naar inhoud springen

Help:Regex

Uit Wikibooks

Regex is de afkorting van Regular Expressions, een zeer sterke taal voor het zoeken in tekstbestanden.

Met een Regex wordt niet zozeer naar een woord of andere combinatie van tekens gezocht, maar aan de hand van een zg. "pattern" dat instructies kan bevatten. De techniek is ingebouwd in verscheidene programmeertalen, waaronder Javascript en PHP. Ook Lua bevat iets dergelijks, maar zeer beperkt en met een sterk afwijkende syntax.

De zoekfunctie op Wikibooks accepteert ook Regex's, maar alleen in combinatie met de trefwoorden intitle of insource. Plaats de Regex tussen slashes ("/") om aan te geven dat het om een Regex gaat, anders zal gezocht worden naar de letterlijke tekst.

Een aantal van de opties die op Wikibooks beschikbaar zijn wordt hier opgesomd.

Regex functie
zoekwoord alle pagina's met (letterlijk) "zoekwoord" in titel of inhoud
(d|t) d of t
(d|t|en) d, t of en
[G-K] character class: een teken uit de reeks G t/m K
[a-eA-E] character class: een teken uit een van de reeksen a t/m e en A t/m E
^ sluit de volgende character class uit
[^5-7] character class: elk teken, behalve cijfers 5 t/m 7
. eenmaal elk mogelijk teken
+ één keer of meermaals het voorafgaande teken
? nul of één keer het voorafgaande teken;
na .? of .*: non-greedy
* nul of meermaals het voorafgaande teken
{1,4} een t/m vier keer het voorafgaande teken
{2,} twee of meer keren het voorafgaande teken
<1900-1920> getallen met een waarde van 1900 t/m 1920
\ "escape"-teken, om te zoeken naar bijzondere tekens in de letterlijke tekst
\d cijfer of getal
\n nieuwe regel
\s spatie, tab of regeleinde
\t tab
\uHHHH unicode-karakter
\w woordkarakter (kleine of hoofdletter, cijfer of underscore)
  • Deze opties kunnen gecombineerd worden door ze direct achter elkaar te schrijven.
  • Zoeken met een Regex is hoofdlettergevoelig. Dit kan uitgeschakeld worden door na de laatste slash een "i" toe te voegen: /<Regex>/i.

Functies die niet ondersteund worden:

Regex functie
^ begin van de regel
$ einde van de regel

Bijzondere tekens

[bewerken]

De volgende tekens hebben een bijzondere functie in een Regex: / \ ^ $ | . ? * + ( ) [ ] { } < > " # @ ~, er kan daarom niet zonder meer naar gezocht worden. Wanneer bv. gezocht moet worden naar titels die haakjes bevatten moet elk haakje voorafgegaan worden door een backslash: intitle:/stoofperen \(recept\)/i. Deze techniek heet "escape'n", en moet voor elk bijzonder teken apart toegepast worden.

Voorbeelden

[bewerken]
  • intitle:/j(a|e)nss?ens?/i vindt alle personen die Jansen of Jensen heten, elk in vier verschillende spellingen, en ook als de naam met een hoofdletter geschreven is, zie wikipedia. In details:
┌─────────────────────────
│ ┌───────────────────────
│ │   ┌───────────────────
│ │   │   ┌───────────────
│ │   │   │  ┌────────────
│ │   │   │  │  ┌─────────
│ │   │   │  │  │  ┌──────
│ │   │   │  │  │  │  ┌───
│ │   │   │  │  │  │  │ ┌─
│ │ ──┴── ┴─ ┴─ ┴─ ┴─ │ │ 
begin regex
zoek een "j"
gevolgd door een "a" of een "e"
gevolgd door "ns"
al dan niet gevolgd door "s"
gevolgd door "en"
al dan niet gevolgd door "s"
einde regex
maak geen onderscheid tussen hoofd- en kleine letters
 
/ j (a|e) ns s? en s? / i


  • intitle:/J.nss?ens?/i zal ook Jonsen ed. vinden, omdat de punt na de "J" met elk teken een match geeft
  • intitle:/frans.*(boek|lijst)/i geeft Franse boeken en -lijsten (maar ook Franse boekweit. ;-) ).
  • intitle:/.*in \d.*/i geeft titels die "in " gevolgd door een getal (jaartal?) bevatten.

Beperkingen

[bewerken]

De zoekmachine van Wikibooks herkent niet de volledige set van functies. Ontbrekende codes zijn oa.:

(?=x) - gezochte tekst moet gevolgd worden door "x"; varianten kunnen betrekking hebben op voorafgaande tekst, of de voorwaarde ontkennen
\D - teken dat geen cijfer is
\W - teken dat geen kleine of hoofdletter, cijfer of underscore is

Ontbrekend bij zoeken met insource, wel beschikbaar bij intitle:

^ - begin van een regel
$ - einde van een regel
Werk in uitvoering.
Deze pagina bevindt zich nog in de opbouwfase. De auteur ervan heeft zich voor­genomen de genoemde onder­werpen verder uit te werken. Ook uw bijdragen zijn welkom!
Informatie afkomstig van Wikibooks NL, een onderdeel van de Wikimedia Foundation.