Diferença entre w e meta-caracteres de expressão regular

alguém pode explicar a diferença entre \w e \b meta-caracteres de expressão regular?

Pelo que sei, ambos os meta-caracteres são usados para delimitar as palavras. Além disso, qual personagem meta é eficiente para conteúdo multilíngue?

Author: Ωmega, 2012-08-09

5 answers

O metacharacter é uma âncora como o caret e o símbolo do dólar. Corresponde a uma posição que é chamada de "limite de palavra" . Este jogo é de tamanho zero. Há três posições diferentes que se qualificam como limites de palavras:
  • antes do primeiro carácter na cadeia, se o primeiro carácter for uma personagem de palavras.
  • depois do último carácter da cadeia, se o o último personagem é um personagem de palavra.
  • Entre dois caracteres na string, where one is a word character and the other is not a word character.

De uma forma simples: \b permite-lhe efectuar uma pesquisa "palavras inteiras apenas" usando uma expressão regular na forma de \bword\b. Um "carácter palavra" é um carácter que pode ser usado para formar palavras. Todos os caracteres que não são "caracteres palavra" são "caracteres não Palavra" .

Em todos os sabores, os caracteres [a-zA-Z0-9_] são Caracteres de palavra. As também correspondem à classe de caracteres de mão curta \w. Sabores mostrando "ascii" para os limites de palavra na comparação de sabor reconhecer apenas estes como caracteres de palavra.

\w significa "word character" , geralmente [A-Za-z0-9_]. Observe a inclusão do sublinhado e dos dígitos.

\B é a versão negada de {[[0]}. \B Corresponde a todas as posições onde \b não corresponde. Efectivamente, \B Corresponde a qualquer posição entre dois caracteres de palavra, bem como em qualquer posição entre dois caracteres não-Palavra.

\W é o diminutivo de [^\w], a versão negada de \w.

 216
Author: Ωmega, 2015-02-04 23:58:38

\w corresponde a um personagem de palavras. \b é uma correspondência de largura zero que corresponde a um carácter de posição que tem um carácter de palavra de um lado, e algo que não é um carácter de palavra do outro. (Exemplos de coisas que não são Caracteres de palavras incluem espaços em branco, início e fim da string, etc.)

\w jogos a, b, c, d, e, e f em "abc def"
\b coincide com o zero (largura) posição antes de a, depois de c, antes de d e depois f no "abc def"

Ver: http://www.regular-expressions.info/reference.html/

 20
Author: jwismar, 2015-08-10 20:24:41
@Mahender, você provavelmente quis dizer a diferença entre \W (em vez de \w) e \b. Se não, então eu concordaria com @BoltClock e @jwismar acima. Caso contrário, continue a ler.

\W corresponderia a qualquer personagem não-Palavra e por isso é fácil de tentar usá-lo para combinar com os limites da palavra. O problema é que não vai corresponder ao início ou ao fim de uma linha. \b é mais adequado para corresponder os limites das palavras, uma vez que também corresponde ao início ou ao fim de uma linha. Em termos gerais (mais usuários experientes podem me corrigir aqui) \b pode ser pensado como (\W|^|$). [Editar: como @Ωmega menciona abaixo, \b é uma correspondência de tamanho zero por isso (\W|^|$) não é estritamente correcto, mas espero que ajude a explicar o diff]

Exemplo rápido: para o texto Hello World, .+\W iria corresponder a Hello_ (com o espaço) mas não irá corresponder a World. .+\b seria igual a Hello e World.

 6
Author: mtariq, 2012-08-09 01:33:23
\b <= this is a word boundary.

Corresponde a uma posição que é seguida por um carácter de palavra, mas não precedida por um carácter de palavra, ou que é precedida por um carácter de palavra, mas não seguida por um carácter de palavra.

\w <= stands for "word character". 

Corresponde sempre aos caracteres ASCII [a-Za-z0-9_]

Há alguma coisa específica que esteja a tentar combinar?

Alguns sites de regex úteis para iniciantes ou apenas para molhar o seu apetência.

Achei este livro muito útil:

 4
Author: james emanon, 2013-12-24 12:02:19

\w is not a word boundary, it matches any word character, including underscores: [a-zA-Z0-9_]. \b is a word boundary, that is, it matches the position between a word and a non-alfanumeric character: \W or [^\w].

Estas implementações podem variar de linguagem para linguagem.
 2
Author: Julián Urbano, 2013-12-19 04:20:18