Разница между метасимволами регулярных выражений w и b
может кто-нибудь объяснить разницу между w и b метасимволы регулярных выражений?
насколько я понимаю, оба эти мета-символа используются для границ слов. Кроме того, какой метасимвол эффективен для многоязычного контента?
5 ответов:
метасимвол
\b- это якорь, как каре и знак доллара. Он соответствует позиции, которая называется "границы слова". Это совпадение нулевой длины.есть три различных позиции, которые квалифицируются как границы слова:
- перед первым символом в строке, если первый символ символ слова.
- после последнего символа в строке, если последний символ слова характер.
- между двумя символами в строка, где один является символом слова, а другой не является символом слова.
проще говоря:
\bпозволяет выполнять "только слово целиком" поиск с помощью регулярного выражения в виде\bword\b. А "слово персонажа" это символ, который может быть использован для формирования слов. Все символы, которые не являются "слово символов" are "не слово персонажи".во всех вкусах, символы
[a-zA-Z0-9_]несколько символов слова. Они также соответствуют классу символов короткой руки\w. Вкусы показывая "ascii" для границ слов в сравнении вкусов распознайте только их как символы слов.
\wрасшифровывается как "слово персонажа" обычно[A-Za-z0-9_]. Обратите внимание на включение подчеркивания и цифр.
\Bявляется отрицаемой версией\b.\Bматчи в каждой позиции, где\bнет. Эффективно,\Bсоответствует в любой позиции между двумя символами слова, а также в любой позиции между двумя символами без слов.
\Wсокращенно[^\w], отрицаемая версия\w.
\wсоответствует символу слова.\b- это совпадение нулевой ширины, которое соответствует символу позиции, который имеет символ слова с одной стороны, и что-то, что не является символом слова с другой. (Примеры вещей, которые не являются символами слова, включают пробелы, начало и конец строки и т. д.)
\wигрa,b,c,d,eиfна"abc def"\bсоответствует позиции (нулевой ширины) передa, послеcдоd, и послеfна"abc def"
@Mahender, вы, вероятно, имели в виду разницу между
\W(вместо\w) и\b. Если нет, то я бы согласился с @BoltClock и @jwismar выше. В противном случае продолжайте чтение.
\Wбудет соответствовать любому не-словесному символу, и поэтому его легко использовать, чтобы соответствовать границам слов. Проблема в том, что он не будет соответствовать началу или концу строки.\bбольше подходит для сопоставления границ слов, поскольку он также будет соответствовать началу или концу строки. Грубо говоря (более опытные пользователи могут исправить меня здесь)\bможно рассматривать как(\W|^|$). [Edit: как @Ωmega упоминает ниже,\bэто матч нулевой длины так(\W|^|$)не совсем правильно, но, надеюсь, помогает объяснить разницу]быстрый пример: для строки
Hello World,.+\Wбудет соответствоватьHello_(с пробелом), но не будет соответствоватьWorld..+\bбудет соответствовать какHelloиWorld.
\b <= this is a word boundary.соответствует позиции, за которой следует символ слова, но не предшествует символу слова, или которой предшествует символ слова, но не следует символ слова.
\w <= stands for "word character".Он всегда соответствует символам ASCII [A-Za-z0-9_]
есть ли что-то конкретное, что вы пытаетесь сопоставить?
некоторые полезные сайты регулярных выражений для начинающих или просто намочить ваш аппетит.
- http://www.regular-expressions.info
- http://www.javascriptkit.com/javatutors/redev2.shtml
- http://www.virtuosimedia.com/dev/php/37-tested-php-perl-and-javascript-regular-expressions
- http://www.i-programmer.info/programming/javascript/4862-master-javascript-regular-expressions.html
я обнаружил, что это очень полезная книга: