регулярное выражение в выражении bash

У меня есть 2 вопроса о регулярных выражениях в выражении bash.

1. не жадный режим

local temp_input='"a1b", "d" , "45"'
if [[ $temp_input =~ \".*?\" ]]
then
    echo ${BASH_REMATCH[0]}
fi

Результат

"a1b", "d" , "45"

В яве

String str = "\"a1b\", \"d\" , \"45\"";
Matcher m = Pattern.compile("\".*?\"").matcher(str);
while (m.find()) {
    System.out.println(m.group());
}

Я могу получить результат ниже.

"a1b"
"d"
"45"

Но как я могу использовать не жадный режим в Bash?
Я могу понять, почему \ "[^ \"]\" работает.
Но я не понимаю, почему \ ".?\" не работает.

2. глобальные матчи

local temp_input='abcba'
if [[ $temp_input =~ b ]]
then
    #I wanna echo 2 b here. 
    #How can I set the global flag?
fi

Как я могу получить все спички?
PS: Я только хочу использовать регулярные выражения.

По второму вопросу, извините за путаницу.
Я хочу повторить "b" и "b", а не считать "b".

Помогите!

Ответы на вопрос(3)

Ваш ответ на вопрос