Ваше регулярное выражение было почти правильным, за исключением того, что вам нужно было сделать не жадный захват в вашей именованной группе id
и изменить это регулярное выражение на
input\s+id="(?<id>.*?)("+?)(?:(\s+name="(?<name>.*)(.*?")))?
Демо
Кроме того, ваше регулярное выражение является чрезмерно сложным, что вы можете упростить, как это,
input\s+id="(?<id>[^"]*)"(?:\s+name="(?<name>[^"]*)")?
Демонстрация для лучшего регулярного выражения