Уроки модуля (4/4)
Разделить с помощью регулярного выражения
String.prototype.split(separator) принимает не только фиксированную строку, но и
также регулярное в качестве разделителя. Это делает его мощным инструментом для токенизации.
структурированный текст.
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]Регулярное выражение /[,\s]+/ соответствует «одному или нескольким запятым или пробелам»: разделение
разбивается по любому составному разделителю.
Типичные случаи
- Разрешающий CSV:
text.split(/\s*,\s*/)для обработки пробелов вокруг запятых. - Наивный токенизатор:
text.split(/\s+/)для извлечения слов. - Сохранять разделитель: если регулярное выражение содержит группы захвата, содержимое групп включено в массив результатов.
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]Без группы () точка с запятой исчезла бы. С (;) вы сохраните его.
в результате.
Сохранение разделителей в операциях разделения
Если вы поместите разделители внутри скобок, выходные данные String.prototype.split будут включать сами разделители в качестве элементов конечного массива, а не отбрасывать их.
Попробуйте это
Найдите все разрешающие разделители CSV: запятую с необязательными пробелами вокруг нее. Таким образом, вы можете использовать его в разделенном виде для токенизации списка.
Показать подсказку
Используйте \\s* до и после запятой, чтобы убрать любые необязательные пробелы.
Решение доступно после 3 попыток
Обзор упражнения
Найдите все разделители «пробелы или точки с запятой» (один или несколько). Таким образом, разделение будет разбивать текст на слова.
Показать подсказку
Объедините \\s и ; в классе [\\s;] с квантором +.
Решение доступно после 3 попыток
Дополнительная задача
Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.
Показать подсказку
Enclose the math operators character class in capture parentheses to preserve them in the split array.
Решение доступно после 3 попыток