Перейти к основному содержимому
Модуль 7 · Урок 4 из 428/32 в курсе~10 min
Уроки модуля (4/4)

Разделить с помощью регулярного выражения

String.prototype.split(separator) принимает не только фиксированную строку, но и также регулярное в качестве разделителя. Это делает его мощным инструментом для токенизации. структурированный текст.

JS
'uno, due,tre  quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]

Регулярное выражение /[,\s]+/ соответствует «одному или нескольким запятым или пробелам»: разделение разбивается по любому составному разделителю.

Типичные случаи

  • Разрешающий CSV: text.split(/\s*,\s*/) для обработки пробелов вокруг запятых.
  • Наивный токенизатор: text.split(/\s+/) для извлечения слов.
  • Сохранять разделитель: если регулярное выражение содержит группы захвата, содержимое групп включено в массив результатов.
JS
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]

Без группы () точка с запятой исчезла бы. С (;) вы сохраните его. в результате.

Сохранение разделителей в операциях разделения

Если вы поместите разделители внутри скобок, выходные данные String.prototype.split будут включать сами разделители в качестве элементов конечного массива, а не отбрасывать их.

Попробуйте это

Упражнение#regex.m7.l4.e1
Попыток: 0Загрузка…

Найдите все разрешающие разделители CSV: запятую с необязательными пробелами вокруг нее. Таким образом, вы можете использовать его в разделенном виде для токенизации списка.

Загрузка редактора…
Показать подсказку

Используйте \\s* до и после запятой, чтобы убрать любые необязательные пробелы.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#regex.m7.l4.e2
Попыток: 0Загрузка…

Найдите все разделители «пробелы или точки с запятой» (один или несколько). Таким образом, разделение будет разбивать текст на слова.

Загрузка редактора…
Показать подсказку

Объедините \\s и ; в классе [\\s;] с квантором +.

Решение доступно после 3 попыток

Дополнительная задача

Упражнение#regex.m7.l4.e3
Попыток: 0Загрузка…

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 попыток