Risposte:
Il metacarattere \bè un'ancora come il cursore e il simbolo del dollaro. Corrisponde a una posizione che si chiama "limite di parola" . Questa partita ha lunghezza zero.
Esistono tre diverse posizioni che si qualificano come limiti di parole:
In poche parole: \bconsente di eseguire una ricerca "solo parole intere" utilizzando un'espressione regolare sotto forma di \bword\b. Un "carattere parola" è un carattere che può essere utilizzato per formare parole. Tutti i caratteri che non sono "caratteri di parole" sono "caratteri non di parole" .
In tutti i sensi, i personaggi [a-zA-Z0-9_]sono caratteri di parole. Questi sono anche abbinati alla classe di caratteri a mano corta \w. I sapori che mostrano "ascii" per i confini delle parole nel confronto dei sapori riconoscono solo questi come caratteri di parole.
\wsta per "carattere parola" , di solito [A-Za-z0-9_]. Si noti l'inclusione del carattere di sottolineatura e delle cifre.
\Bè la versione negata di \b. \Bcorrisponde in ogni posizione dove \bnon lo fa. Effettivamente, \Bcorrisponde in qualsiasi posizione tra due caratteri di parole e in qualsiasi posizione tra due caratteri non di parole.
\Wè l'abbreviazione di [^\w], la versione negata di \w.
\wcorrisponde a un carattere di parola. \bè una corrispondenza di larghezza zero che corrisponde a un carattere di posizione che ha un carattere di parola su un lato e qualcosa che non è un carattere di parola sull'altro. (Esempi di cose che non sono caratteri di parole includono spazi bianchi, inizio e fine della stringa, ecc.)
\wpartite a, b, c, d, e, e fin "abc def"
\bpartite posizione (larghezza zero) prima a, dopo c, prima de dopo fin"abc def"
\bun'asserzione di larghezza zero; non corrisponde a un personaggio , corrisponde a una posizione .
@Mahender, probabilmente intendevi la differenza tra \W(anziché \w) e \b. In caso contrario, sarei d'accordo con @BoltClock e @jwismar sopra. Altrimenti continua a leggere.
\Wcorrisponderebbe a qualsiasi carattere non verbale ed è quindi facile provare a usarlo per abbinare i confini delle parole. Il problema è che non corrisponderà all'inizio o alla fine di una riga. \bè più adatto per abbinare i confini delle parole in quanto corrisponderà anche all'inizio o alla fine di una riga. In parole povere (gli utenti più esperti possono correggermi qui) si \bpuò pensare come (\W|^|$). [Modifica: come @ Ωmega menziona di seguito, \bè una corrispondenza di lunghezza zero quindi (\W|^|$)non è strettamente corretta, ma si spera che aiuti a spiegare il diff]
Esempio rapido: per la stringa Hello World, .+\Wcorrisponderebbe Hello_(con lo spazio) ma non corrisponderà World. .+\bcorrisponderebbe a entrambi Helloe World.
\bsignificato come (\W|^|$), poiché (\W|^|$)includerà il carattere non verbale all'interno del risultato della corrispondenza. Puoi verificare questo fatto qui => regexr.com/3qf98 .
\bper me, significa lo stesso di (?<=\W|^|$)quando usato prima di un motivo e (?=\W|^|$)quando usato dopo un motivo. Puoi controllare di cosa sto parlando qui => regexr.com/3qf9h . Basta confrontare con il risultato delle \bancore proprio qui => regexr.com/3qf9t
\b <= this is a word boundary.
Corrisponde a una posizione seguita da un carattere di parola ma non preceduto da un carattere di parola o che è preceduto da un carattere di parola ma non seguito da un carattere di parola.
\w <= stands for "word character".
Corrisponde sempre ai caratteri ASCII [A-Za-z0-9_]
C'è qualcosa di specifico che stai cercando di abbinare?
Alcuni utili siti web regex per principianti o semplicemente per inumidire l'appetito.
Ho trovato questo un libro molto utile:
\wnon è sempre equivalente ai caratteri ASCII [A-Za-z0-9_]: corrisponderà anche a punti di codice Unicode alfanumerici e potrebbe corrispondere a caratteri ISO-Latin-1 a 8 bit se l'impostazione internazionale è impostata in modo appropriato .
\wè non è un confine di parola, corrisponde a qualsiasi carattere di parola, tra cui sottolineature: [a-zA-Z0-9_]. \b è un limite di parole, ovvero corrisponde alla posizione tra una parola e un carattere non alfanumerico: \Wo [^\w].
Queste implementazioni possono tuttavia variare da lingua a lingua.
\wrappresenta un carattere parola , mentre\brappresenta un confine tra una parola carattere e una non parola. Non sono la stessa cosa.