const s = `login password a=23 b=73 c=3
login password a=23 b=3
login password a=73 c=3
login password b=23 c=73`;
const iterator = s.matchAll(/(?<=login password )(a=(?<a>\d+) ?)?(b=(?<b>\d+) ?)?(c=(?<c>\d+) ?)?/g);
[...iterator].forEach(match => console.log(match.groups));
Result:
{a: "23", b: "73", c: "3"}
{a: "23", b: "3", c: undefined}
{a: "73", b: undefined, c: "3"}
{a: undefined, b: "23", c: "73"}
Или проще без регулярок: взять подстроку после префикса —
"a=23 b=73 c=3"
, разбить по пробелам, потом каждый элемент разбить по знаку
=
на ключ и значение.