регулярное выражение в выражении 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".
Помогите!