Что касается вопроса a: 1 (0 + 1) * 1 не совпадает с односимвольной строкой 1, которая начинается и заканчивается 1. Для этого нужен особый случай, как в примере.
Что касается вопроса b: я не могу говорить за автора.Однако ... Любая строка, которая содержит не более одного 1, является строкой, которая либо не имеет 1, либо имеет ровно 1 1. Предполагая, что алфавит равен {0,1}, первая означает любую строку, которая содержит ноль или более 0, чтоесть, 0 *.Последнее, с тем же допущением, означает любую строку, которая содержит ноль или более 0, за которыми следует один 1, за которым следует ноль или mpre 0, то есть 0 * 10 *.Сочетание этих результатов дает пример.