Regular Expressions
Граница Word
Поиск…
Синтаксис
- Стиль 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
Существуют три разных позиции, которые квалифицируются как границы слов:
- Перед первым символом в строке, если первый символ является символом слова.
- После последнего символа в строке, если последний символ является символом слова.
- Между двумя символами в строке, где один является символом слова, а другой не является символом слова.
Термин « слово» здесь означает любое из следующих
- Алфавит (
[a-zA-Z]
) - Номер (
[0-9]
) - Подчеркивание
_
Короче говоря, символ слова = \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.*