Sök…


Syntax

  • POSIX-stil, slutet på ordet: [[:>:]]
  • POSIX-stil, ordets början: [[:<:]]
  • POSIX-stil, ordgräns: [[:<:][:>:]]
  • SVR4 / GNU, ordets slut: \>
  • SVR4 / GNU, början av ordet: \<
  • Perl / GNU, ordgräns: \b
  • Tcl, ordets slut: \M
  • Tcl, början av ordet: \m
  • Tcl, ordgräns: \y
  • Bärbar ERE, ordets början: (^|[^[:alnum:]_])
  • Bärbar ERE, ordets slut: ([^[:alnum:]_]|$)

Anmärkningar

Ytterligare resurser

Matcha komplett ord

\bfoo\b

matchar det fullständiga ordet utan alfanumeriskt och _ föregår eller följer av det.

Ta från regularexpression.info

Det finns tre olika positioner som kan betecknas som ordgränser:

  1. Innan det första tecknet i strängen, om det första tecknet är ett ordtecken.
  2. Efter det sista tecknet i strängen, om det sista tecknet är ett ordtecken.
  3. Mellan två tecken i strängen, där en är ett ordtecken och den andra inte ett ordtecken.

Termen ordkaraktär betyder här något av följande

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

Kort sagt, ordtecken = \w = [a-zA-Z0-9_]

Hitta mönster i början eller slutet av ett ord

Undersök följande strängar:

foobarfoo
bar
foobar
barfoo
  • reguljära uttryck bar kommer att matcha alla fyra strängar,
  • \bbar\b matchar bara den andra,
  • bar\b kommer att kunna matcha andra och tredje strängarna och
  • \bbar matchar den andra och den fjärde strängen.

Ordgränser

Metoden för \b

För att göra det lättare att hitta hela ord kan vi använda metatecken \b . Det markerar början och slutet på en alfanumerisk sekvens *. Eftersom det bara tjänar till att markera dessa platser matchar det faktiskt ingen karaktär på egen hand.

*: Det är vanligt att kalla en alfanumerisk sekvens ett ord, eftersom vi kan fånga dess tecken med a \w (ordteckenklassen). Detta kan vara vilseledande, eftersom \w också innehåller siffror och, i de flesta smaker, understrecket.

Exempel:

regex Inmatning Tändstickor?
\bstack\b stackoverflow Nej , eftersom det inte finns någon händelse av hela stack
\bstack\b foo stack bar Ja , eftersom det inte finns något före eller efter stack
\bstack\b stack!overflow Ja : det finns ingenting innan stack och ! är inte ett ordkaraktär
\bstack stackoverflow Ja , eftersom det inte finns någonting innan stack
overflow\b stackoverflow Ja , eftersom det inte finns något efter overflow

Metateckenet \B

Detta är motsatsen till \b , som matchar platsen för varje karaktär utan gränser. Som \b , eftersom det matchar platser matchar det ingen karaktär på egen hand. Det är användbart för att hitta icke hela ord.

Exempel:

regex Inmatning Tändstickor?
\Bb\B abc Ja , eftersom b inte är omgiven av ordgränser.
\Ba\B abc Nej , a har en ordgräns på sin vänstra sida.
a\B abc Ja , a har inte ett ordgräns på sin högra sida.
\B,\B a,,,b Ja , det matchar det andra komma eftersom \B också matchar utrymmet mellan två icke-ordtecken (det bör noteras att det finns ett ordgräns till vänster om det första komma och till höger om det andra).

Gör texten kortare men bryt inte sista ordet

För att göra lång text på de flesta N-tecken men låta det sista ordet vara intakt, använd .{0,N}\b mönster:

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow