регулярное выражение в выражении 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: я только хочу использовать регулярные выражения.

По второму вопросу, извините за путаницу.

Я хочу повторить "б" и "б", не считайте "б".

Помогите!

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

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