volgorde van karakters wat 'n soekpatroon vorm From Wikipedia, the free encyclopedia
'n Regulêre uitdrukking is 'n reeks karakters wat 'n soekpatroon definieer. Sulke patrone word gewoonlik deur stringsoekalgoritmes in vind- of vind-en-vervang-operasies op stringe, of vir invoervalidering aangewend. Dit is 'n onderwerp wat in teoretiese rekenaarwetenskap en formeletaalteorie bestudeer word.
Die konsep ontstaan in die 1950's toe die Amerikaanse wiskundige Stephen Cole Kleene die beskrywing van 'n regulêre taal formaliseer. Die konsep kom met die aanvang van teksverwerkernutsgoed in Unix in algemene gebruik. Verskillende sintaksisse vir die skryf van regulêre uitdrukkings bestaan sedert die 1980's, waaronder die POSIX-standaard en die Perl-sintaksis.
Regulêre uitdrukkings word in soekenjins, vind-en-vervang-operasies in woordverwerkers en teksredigeerders, teksverwerkernutsgoed soos sed en AWK, en leksikale analise gebruik.
Baie programmeertale verskaf regulêre-uitdrukkingvermoë ingebou of deur middel van biblioteke.
Die volgende is 'n lys van spesiale karakters. Indien vir 'n spesiale karakter getoets wil word moet dit voorafgegaan word met 'n \
:
. + * ? ^ $ ( ) [ ] { } | \
Simbool | Alternatief | Beskrywing |
---|---|---|
\n |
|
Lynbreek |
\r |
|
Lynbreek |
\t |
|
(Engels = Tab) |
\f |
|
(Engels = form feed) |
\s |
[ \n\r\t\f] |
Witspasie (let op die spasie voor "\n") |
\S |
[^ \n\r\t\f] |
Alles behalwe 'n witspasie |
^ |
|
Begin van 'n nuwe lyn (kan ook \n gebruik) |
$ |
|
Einde van 'n lyn (kan ook \n gebruik) |
. |
[^\n] |
Alles behalwe 'n nuwe lyn |
w |
[a-zA-Z0-9_] |
Woordkarakters |
\W |
[^a-zA-Z0-9_] |
Alles behalwe woordkarakters |
\d |
[0-9] |
Numeriese waardes |
\D |
[^0-9] |
Alles behalwe numeriese waardes |
\b |
[\s\t] |
Woordgrens (Engels = "word boundary") |
? |
Die vraagteken dui nul of een voorkomste van die voorafgaande element aan. Byvoorbeeld, colou?r pas beide "color" en "colour". |
* |
Die asterisk dui nul of meer voorkomste van die voorafgaande element aan. Byvoorbeeld, ab*c pas "ac", "abc", "abbc", "abbbc", ensovoorts. |
+ |
Die plusteken dui een of meer voorkomste van die voorafgaande element aan. Byvoorbeeld, ab+c pas "abc", "abbc", "abbbc", ensovoots, maar NIE "ac" nie. |
{n} [1] |
Die voorafgaande element kom presies n keer voor. |
{min,} [1] |
Die voorafgaande element kom min of meer keer voor. |
{,maks} [1] |
Die voorafgaande element kom nul tot maks keer voor. |
{min,maks} [1] |
Die voorafgaande element kom ten minste min keer voor, maar nie meer as maks keer nie. |
Die vertikale lyn of pypkarakter kan gebruik om 'n kombinasie van woorde te spesifiseer.
v(uu|oo)r
kan gebruik word om vuur en voor te vind. Dit sal ander woorde soos vier, voer, vir, ensovoorts uitsluit.
Wanneer alle drieletter karakters gevind moet word wat begin met 'n m en eindig met 'n s, kan dit soos volg gedoen word:
m.s
, ofm.{1}s
Let wel dat m.*s
ook woorde gaan insluit soos maas, mees, mens, ensovoorts
En m.?s
gaan ook ms insluit.
Wanneer die middelste karakter 'n vokaal moet wees kan dit soos volg gedoen word:
m[aeiou]s
Soos reeds genoem word die vertikale streep gebruik om 'n opsie van verskillende meervoudige karakters te gee.
v(uu|oo)r
kan gebruik word om vuur en voor te vind.
Teks: | abc, abcww, abcxx, abcyy, abczz | abc, abcww, abcxx, abcyy, abczz |
Wat om te kry: | abcxx & abcyy | Indien abc ingesluit moet word. |
Uitdrukking: | abc(xx|yy) | abc(xx|yy)? |
Teks: | aaaa 123456 |
123456 bbbb |
Wat om te kry: | Van die begin van die lyn tot by die karakter 3 | Van die karakter '4' tot by die einde van die lyn |
Uitdrukking: | ^.*3 |
4.*$ |
\n
kan ook gebruik word om die begin of einde van 'n lyn aan te dui.
Indien \n
in plaas van ^
gebruik word, gaan die eerste lyn van die teks nie in ag geneem word nie.
Indien \n
in plaas van $
gebruik word, gaan die laaste lyn van die teks nie in ag geneem word nie.
Om hierdie probleem te oorkom kan 'n mens bloot \n
aan die voorkant en die agterkant van die teks byvoeg.
(Engels = greedy and lazy quantifiers[2])
Lui | Gulsig | |
Teks: | <abc> 123 <def> 456 <ghi> 789 | <abc> 123 <def> 456 <ghi> 789 |
Wat om te kry: | Alles binne "<" en ">" | Vanaf eerste "<" tot laaste ">" |
Uitdrukking: | <(.*?)>
|
<.*?> |
Teks: | A boyfriend and girlfriend gained a friend when they asked to befriend them |
Wat om te kry: | Alle friend wat nie girl aan die voorkant het nie. |
Uitdrukking: | \b(?!girl)\w*friend\b
|
Teks: | Leername: leer1.doc, leer2.tmp, leer3.xlsx, leer4.1a3 | Leername: leer1.doc, leer2.tmp, leer3.xlsx, leer4.1a3 |
Wat om te kry: | Alle lêertipes met agtervoegsels .tmp en waarvan die eerste en derde karakter 'n syfer is | Die teenoorstelde |
Uitdrukking: | \w+\.(tmp|\d\D\d)\w*
|
\w+\.(?!tmp|\d\D\d)\w* |
(Engels = Positive lookahead[3])
Teks: | USD 100, USD 350, USD 12,345, USD geldeenheid, USD van Amerika |
Wat om te kry: | Alle USD wat eindig met getalle (350, 12,345) |
Uitdrukking: | USD(?=\s\d+?,?\d+)
|
(Engels = Negative lookahead[4])
Teks: | kar verkoop, kar nie verkoop, kar verkoop, kar herstel |
Wat om te kry: | Alle kar wat NIE eindig met verkoop |
Uitdrukking: | kar(?!\s+verkoop)
|
(Engels = Positive look behind)
Teks: | abc123, abc567, def123 |
Wat om te kry: | Alle 123 wat voorafgegaan word deur abc |
Uitdrukking: | (?<=[a-c]{3})[1-3]{3} |
(Engels = Negative look behind)
Teks: | abc123, abc567, def123 |
Wat om te kry: | Alle 123 wat nie voorafgegaan word deur abc nie |
Uitdrukking: | (?<![a-c]{3})[1-3]{3} |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.