Domanda

Quali sono non-limite di parola in regex (\ B), rispetto al word-confine?

È stato utile?

Soluzione

Un limite di parola (\b) è una partita di larghezza pari a zero che può abbinare:

  • Tra un carattere di parola (\w) e un carattere non-parola (\W) o
  • tra un carattere di parola e l'inizio o la fine della stringa.

In JavaScript la definizione di \w è [A-Za-z0-9_] e \W è tutto il resto.

La versione negata di \b, \B scritta, è una partita di larghezza zero quando il sopra non attesa. Pertanto si può abbinare:

  • Tra due caratteri di parola.
  • Tra due caratteri non-parola.
  • tra un carattere di non-parola e l'inizio o la fine della stringa.
  • La stringa vuota.

Per esempio, se la stringa è "Hello, world!" poi partite \b nei seguenti luoghi:

 H e l l o ,   w o r l d !
^         ^   ^         ^ 

E \B soddisfa quei luoghi dove \b non corrisponde:

 H e l l o ,   w o r l d !
  ^ ^ ^ ^   ^   ^ ^ ^ ^   ^

Altri suggerimenti

Lo scopo principale di non-word-boundary è quello creato una regex che dice:

  • se siamo all'inizio / fine di un word char (\w = [a-zA-Z0-9_]) assicurarsi che il carattere successivo precedente / è anche un word char,

    es .: "a\B." ~ "a\w":

    "ab", "a4", "a_", ... ma non "a ", "a."

  • se siamo all'inizio / fine di un non-word char (\W = [^a-zA-Z0-9_]) assicurarsi che il carattere successivo precedente / è anche un non-word char,

    es .: "-\B." ~ "-\W":

    "-.", "- ", "--", ... ma non "-a", "-1"

Per word-boundary è simile ma invece di fare in modo che i caratteri adiacenti sono della stessa classe (word char / non-word car) devono differire, da cui il nome word's boundary.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top