Вы можете использовать (.+?)(&&|\||;|$)
, используя $
, чтобы утверждать конец строки, и использовать .+?
, чтобы соответствовать любому символу, кроме новой строки, 1 или более раз, чтобы предотвратить сопоставление пустой строки.
Если вы также хотите использовать запятую, вы можете добавить это к своему чередованию.
Обратите внимание, что вы используете 2 группы захвата. Если вы не используете данные из группы 2, вы можете сделать так, чтобы они не фиксировались вместо (?:
const regex = /(.+?)(&&|\||;|$)/gm;
const test = 'read -p test TEST && echo | ls -lh ~/bin; test | echo\n';
let m;
while ((m = regex.exec(test)) !== null) {
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match.trim()}`)
})
}