Как разбить строку, когда встречаются несколько определенных символов - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь написать функцию, которая принимает строку в качестве входных данных и возвращает массив строк. Входная строка - это код, который состоит из небольших частей, помещенных в тандем. Каждая часть состоит из набора цифр и букв, разделенных пробелами, и они заканчиваются только определенным образом.

каждая часть выглядит следующим образом:

74a 2b 23d 1P QQ

это заканчивается только так:

QQ Q или другое соединение с X в нем, как 3X или 12X. Поэтому, когда я вижу эти три части, я понимаю, что это конец этой части, поэтому я должен разделиться после нее.

split(74a 2b 23d 1P QQ 45b 1111a Q 3X 11a 5c 5X QQ 11a 65e 45b 36X 44a 88a 3a 245b 656c QQ)

должен выдать этот вывод:

[74a 2b 23d 1P QQ, 45b 1111a Q, 3X, 11a 5c 5X, QQ, 11a 65e 45b 36X, 44a 88a 3a 245b 656c QQ]

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете использовать шаблон /\s*(.*?(\bQQ?|X))/g и получить доступ к группе захвата, чтобы получить совпадение без пробелов. При этом используется не жадный подстановочный знак .*?, за которым следует чередование, совпадающее с любым из ваших вариантов окончания.

const s = "74a 2b 23d 1P QQ 45b 1111a Q 3X 11a 5c 5X QQ 11a 65e 45b 36X 44a 88a 3a 245b 656c QQ";

const pattern = /\s*(.*?(\bQQ?|X))/g;
const result = [...s.matchAll(pattern)].map(e => e[1]);

console.log(result);
...