Help:Regex
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?/ivindt 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?/izal ook Jonsen ed. vinden, omdat de punt na de "J" met elk teken een match geeftintitle:/frans.*(boek|lijst)/igeeft Franse boeken en -lijsten (maar ook Franse boekweit. ;-) ).intitle:/.*in \d.*/igeeft 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