Conforme descrito aqui , por exemplo, ele corresponde a entre palavras:
There are three different positions that qualify as word boundaries:
- Before the first character in the string, if the first character is a word character.
- After the last character in the string, if the last character is a word character.
- Between two characters in the string, where one is a word character and the other is not a word character.
Aqui estão alguns exemplos de cada um desses casos:
-
Para a string
foobar
, o primeiro caso corresponde afoobar ^-----here
-
Para a string
foobar
, o segundo caso corresponde afoobar ^--here
-
Para a string
foo bar
, o terceiro caso será igual afoo bar ^--here, because space is not a word character
O que se qualifica como um caractere de palavra depende da implementação da expressão regular específica. Em todos os casos, no entanto, letras ( [a-z]
e [A-Z]
), números ( [0-9]
) e _
são considerados caracteres de palavras.
Assim, o exemplo de regex que você postou ( \b[A-Z]+\b
) significa encontrar a string mais longa entre dois limites de palavras e que consiste apenas em letras maiúsculas. Pode ser mais fácil de explicar pelo exemplo:
echo "FOOBAR" | egrep '\b[A-Z]+\b' # Works
echo "FOO BAR" | egrep '\b[A-Z]+\b' # Works
echo "aFOOBARb" | egrep '\b[A-Z]+\b' # Does not work, we want capitals only
echo "12345" | egrep '\b[A-Za]+\b' # Does not work, no letters
echo "1FOOBAR2" | egrep '\b[A-Z]+\b' # Does not work, 1 and 2 are word chars
echo "_FOOBAR_" | egrep '\b[A-Z]+\b' # Does not work, _ is a word char
echo "#FOOBAR$" | egrep '\b[A-Z]+\b' # Works, # and $ are not word chars