Поиск…


Синтаксис

  • Стиль POSIX, конец слова: [[:>:]]
  • Стиль POSIX, начало слова: [[:<:]]
  • Стиль POSIX, граница слова: [[:<:][:>:]]
  • SVR4 / GNU, конец слова: \>
  • SVR4 / GNU, начало слова: \<
  • Perl / GNU, граница слова: \b
  • Tcl, конец слова: \M
  • Tcl, начало слова: \m
  • Tcl, граница слова: \y
  • Portable ERE, начало слова: (^|[^[:alnum:]_])
  • Portable ERE, конец слова: ([^[:alnum:]_]|$)

замечания

Дополнительные ресурсы

Матч полного слова

\bfoo\b

будет соответствовать полному слову без алфавитно-цифровых и _ предшествующих или последующих им.

Взятие из regularexpression.info

Существуют три разных позиции, которые квалифицируются как границы слов:

  1. Перед первым символом в строке, если первый символ является символом слова.
  2. После последнего символа в строке, если последний символ является символом слова.
  3. Между двумя символами в строке, где один является символом слова, а другой не является символом слова.

Термин « слово» здесь означает любое из следующих

  1. Алфавит ( [a-zA-Z] )
  2. Номер ( [0-9] )
  3. Подчеркивание _

Короче говоря, символ слова = \w = [a-zA-Z0-9_]

Поиск шаблонов в начале или в конце слова

Изучите следующие строки:

foobarfoo
bar
foobar
barfoo
  • bar регулярного выражения будет соответствовать всем четырем строкам,
  • \bbar\b будет соответствовать только 2,
  • bar\b будет соответствовать 2-й и 3-й строкам и
  • \bbar будет соответствовать 2-й и 4-й строкам.

Границы слов

Метасимвол \b

Чтобы упростить поиск целых слов, мы можем использовать метасимвол \b . Он отмечает начало и конец буквенно-цифровой последовательности *. Кроме того, поскольку он служит только для обозначения этих местоположений, он фактически не соответствует ни одному символу.

*: Обычно называют буквенно-цифровую последовательность словом, так как мы можем поймать ее символы с \w (класс слов символов). Это может ввести в заблуждение, так как \w также включает числа и, в большинстве случаев, подчеркивание.

Примеры:

Regex вход Матчи?
\bstack\b stackoverflow Нет , поскольку нет никакого смысла всего слова stack
\bstack\b foo stack bar Да , поскольку нет ничего раньше или после stack
\bstack\b stack!overflow Да : перед stack нет ничего ! не является символом слова
\bstack stackoverflow Да , поскольку перед stack ничего нет
overflow\b stackoverflow Да , поскольку после overflow ничего нет

Метасимвол \B

Это противоположно \b , соответствующему местоположению каждого неграничного символа. Подобно \b , поскольку он соответствует местоположениям, он не соответствует ни одному символу. Это полезно для поиска не целочисленных слов.

Примеры:

Regex вход Матчи?
\Bb\B abc Да , поскольку b не окружен границами слов.
\Ba\B abc Нет , a имеет границу слова с левой стороны.
a\B abc Да, не имеет границ слова на его правой стороне. a
\B,\B a,,,b Да , он соответствует второй запятой, потому что \B также будет соответствовать пробелу между двумя символами без слова (следует отметить, что есть левая граница слева от первой запятой и справа от второй).

Сделайте текст короче, но не сломайте последнее слово

Чтобы сделать длинный текст длиной не более N символов, но оставить неизменным последнее слово, используйте .{0,N}\b pattern:

^(.{0,N})\b.*


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow