#javascript #regex
#javascript #регулярное выражение
Вопрос:
У меня есть строка, подобная этой:
"word1 word2 ngroup of wordsn"
Мне нужно разделить ее пробелами, за исключением пробелов, которые встречаются между 2 n
, и сохранить n
символ. Таким образом, результатом будет такой массив:
[
"word1",
"word2",
"ngroup of wordsn"
]
Я нашел результаты, которые дают то же самое с ,
помощью вместо n
, но я не могу заменить его каким-либо другим символом.
В настоящее время я использую приведенный ниже код, но он не сохраняет n
.
input.split('n').flatMap((s,i)=>i%2?`n${s.trim()}n`:s.trim().split(' ')).filter(v=>v)
Примечания:
Если перед входной строкой есть слова n
, перед ней всегда будет пробел, т. Е. Строка может содержать word1 ngroup 1n
, но никогда word1ngroup 1n
Строка также может содержать несколько групп, например word1 ngroup 1n word2 ngroup 2n
Ответ №1:
Вы можете использовать
const text = "word1 word2 ngroup of wordsn";
console.log(text.match(/n.*n|S /g))
/n.*n|S /g
Шаблон соответствует нескольким вхождениям
n.*n
— символ перевода строки, затем любые 0 или более символов, кроме символов разрыва строки (как можно больше), а затем перевод строки|
— илиS
— 1 или более символов, не содержащих пробелов.
Смотрите демонстрацию регулярных выражений.