2012-11-19 9 views
5

So che la maggior parte dei motori di espressioni regolari, incluso quello in JavaScript, ha \b per abbinare un limite di parola, che si tratti all'inizio o alla fine di una parola.Esistono equivalenti JavaScript dell'espressione regolare Vim all'inizio e alla fine della parola " <" and ">"?

Ma Vim ha anche due più specifici regolari atomi di espressione:

fa JavaScript hanno un equivalente di questi atomi, e se non c'è un modo per esprimere la loro semantica più precisa in qualche altro modo?

+0

In realtà ho appena iniziato a preoccuparsi che '\' <' and '\> sono in realtà da Vim ... forse sono da entrambi. Verifica ora ... – hippietrail

+0

Ma nessun limite di parole può essere sia l'inizio di qualche parola che la fine di un'altra parola? Qual è la distinzione che stai cercando di gestire? –

+0

@MarkReed, no, perché un limite di parola corrisponde solo alla posizione direttamente prima/dopo una parola e NON ad es. lo spazio bianco prima/dopo la parola. – stema

risposta

7

Per quanto ne so non c'è nulla di predefinito. Ma quello che puoi fare è aggiungere un numero lookahead al limite della parola, per verificare se è l'inizio o la fine della parola.

\< sarebbe poi \b(?=\w). Questo controlla se dopo il confine della parola segue un carattere di parola ==> inizio della parola. See this as example on regexr

\> sarebbe quindi \b(?!\w). Questo controlla se dopo il confine di parola, non un carattere di parola sta seguendo ==> fine della parola

+0

+1, ma dovresti usare '(?! \ W)' invece di '(? = \ W)' per il secondo caso. –

+0

@Tim, grazie per il tuo commento, l'ho aggiunto alla soluzione. – stema

+0

In realtà non è solo più chiaro: la soluzione non corrisponderebbe a un limite di parole alla fine della stringa. –