regex na expressão bash
Eu tenho 2 perguntas sobre o regex na expressão bash.
Modo 1.non-greedy
local temp_input='"a1b", "d" , "45"'
if [[ $temp_input =~ \".*?\" ]]
then
echo ${BASH_REMATCH[0]}
fi
O resultado é
"a1b", "d" , "45"
Em java
String str = "\"a1b\", \"d\" , \"45\"";
Matcher m = Pattern.compile("\".*?\"").matcher(str);
while (m.find()) {
System.out.println(m.group());
}
Eu posso obter o resultado abaixo.
"a1b"
"d"
"45"
Mas como posso usar o modo não-ganancioso no bash?
Eu posso entender porque o \ "[^ \"]\" trabalho.
Mas eu não entendo porque o \ ".?\" não funciona.
Jogos 2.global
local temp_input='abcba'
if [[ $temp_input =~ b ]]
then
#I wanna echo 2 b here.
#How can I set the global flag?
fi
Como posso obter todos os jogos?
ps: Eu só quero usar regex.
Para a segunda pergunta, desculpe pelo confuso.
Eu quero eco "b" e "b", não contar "b".
Socorro!