Zoeken…


Syntaxis

  • POSIX-stijl, einde van het woord: [[:>:]]
  • POSIX-stijl, begin van het woord: [[:<:]]
  • POSIX-stijl, woordgrens: [[:<:][:>:]]
  • SVR4 / GNU, einde van het woord: \>
  • SVR4 / GNU, begin van het woord: \<
  • Perl / GNU, woordgrens: \b
  • Tcl, einde van het woord: \M
  • Tcl, begin van het woord: \m
  • Tcl, woordgrens: \y
  • Portable ERE, begin van het woord: (^|[^[:alnum:]_])
  • Portable ERE, einde van woord: ([^[:alnum:]_]|$)

Opmerkingen

Aanvullende bronnen

Overeenkomen met het volledige woord

\bfoo\b

komt overeen met het volledige woord zonder alfanumeriek en _ of erna.

Overnemen van regularexpression.info

Er zijn drie verschillende posities die in aanmerking komen als woordgrenzen:

  1. Voor het eerste teken in de tekenreeks, als het eerste teken een woordteken is.
  2. Na het laatste teken in de tekenreeks, als het laatste teken een woordteken is.
  3. Tussen twee tekens in de tekenreeks, waarbij de ene een woordteken is en de andere geen woordteken is.

De term woordkarakter betekent hier een van de volgende dingen

  1. Alfabet ( [a-zA-Z] )
  2. Nummer ( [0-9] )
  3. Underscore _

Kortom, woordteken = \w = [a-zA-Z0-9_]

Zoek patronen aan het begin of einde van een woord

Onderzoek de volgende strings:

foobarfoo
bar
foobar
barfoo
  • de reguliere expressie bar zal overeenkomen met alle vier snaren,
  • \bbar\b komt alleen overeen met de 2e,
  • bar\b kan de 2de en 3de reeks matchen, en
  • \bbar komt overeen met de 2e en 4e snaar.

Woordgrenzen

Het metacharacter \b

Om het gemakkelijker te maken om hele woorden te vinden, kunnen we het metateken gebruiken \b . Het markeert het begin en het einde van een alfanumerieke reeks *. Omdat het alleen dient om deze locaties te markeren, komt het eigenlijk niet overeen met alleen een personage.

*: Het is gebruikelijk om een alfanumerieke reeks een woord te noemen, omdat we de tekens kunnen vangen met een \w (de klasse met woordtekens). Dit kan echter misleidend zijn, omdat \w ook cijfers en, in de meeste smaken, het onderstrepingsteken omvat.

Voorbeelden:

regex Invoer Wedstrijden?
\bstack\b stackoverflow Nee, omdat er geen vookomen van het gehele woord stack
\bstack\b foo stack bar Ja , want er is niets vóór of na de stack
\bstack\b stack!overflow Ja : er is niets vóór stack en ! is geen woordkarakter
\bstack stackoverflow Ja , want er is niets vóór stack
overflow\b stackoverflow Ja , want er is niets na overflow

Het metacharacter \B

Dit is het tegenovergestelde van \b , vergeleken met de locatie van elk niet-grenskarakter. Zoals \b , omdat het overeenkomt met locaties, komt het op zichzelf niet overeen. Het is handig voor het vinden van niet hele woorden.

Voorbeelden:

regex Invoer Wedstrijden?
\Bb\B abc Ja , omdat b niet wordt omgeven door woordgrenzen.
\Ba\B abc Nee , a heeft een woordgrens aan de linkerkant.
a\B abc Ja , a heeft geen woordgrens aan de rechterkant.
\B,\B a,,,b Ja , het komt overeen met de tweede komma omdat \B ook overeenkomt met de spatie tussen twee niet-woordtekens (er moet worden opgemerkt dat er een woordgrens links van de eerste komma en rechts van de tweede is).

Maak tekst korter maar breek het laatste woord niet

Gebruik om een lange tekst van maximaal N tekens te maken, maar laat het laatste woord intact .{0,N}\b patroon:

^(.{0,N})\b.*


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow