2011-01-14 3 views
3

Я хочу захватить подстроку строки, выбирая число символов, но если какое-либо слово разрезается, то до получения последнего пробела.Сложное регулярное выражение

В качестве примера, если это текст:

«Это пример текста Lorem Ipsum, и т.д ...»

12 символов даст «Это е». В этом случае последнее слово разрезается, поэтому результат должен быть «Это».

Возможно ли это сделать с помощью регулярных выражений?

ответ

6
^.{0,11}\w\b 

Найдет 12 символов, где последнее слово символ \w с последующим словом перерыв \b. Разрыв слова - это утверждение с нулевой длиной, которое соответствует началу или концу слова.

Результат: \w\b гарантирует, что конечный символ матча является последним символом слова, поэтому вы не получите частичное слово.

+0

Просто отлично. Спасибо большое. – Jose3d

1

Альтернатива @ JohnKugelman это:

^([\w\s]{0,12})\s 

Сопоставьте начало слова, найти слова и пробелы (до 12 символов). Или вы могли бы использовать:

^([\w\s]{1,12})\b 

Который делает то же самое, но не совпадает вплоть до следующего символа без слова (пробел, знаки препинания и т.д.)

(Просто показывая другой метод)

+0

Большое спасибо Брэд. – Jose3d

Смежные вопросы