Regex in bash Ausdruck
Ich habe 2 Fragen zu Regex in bash expression.
1. Nicht gieriger Modus
local temp_input='"a1b", "d" , "45"'
if [[ $temp_input =~ \".*?\" ]]
then
echo ${BASH_REMATCH[0]}
fi
Das Ergebnis ist
"a1b", "d" , "45"
In Java
String str = "\"a1b\", \"d\" , \"45\"";
Matcher m = Pattern.compile("\".*?\"").matcher(str);
while (m.find()) {
System.out.println(m.group());
}
Ich kann das Ergebnis unten sehen.
"a1b"
"d"
"45"
Aber wie kann ich den nicht gierigen Modus in Bash verwenden?
Ich kann verstehen, warum die \ "[^ \"]funktioniert.
Aber ich verstehe nicht, warum das ".?\" arbeite nicht.
2.globale Übereinstimmungen
local temp_input='abcba'
if [[ $temp_input =~ b ]]
then
#I wanna echo 2 b here.
#How can I set the global flag?
fi
Wie kann ich alle Spiele bekommen?
ps: Ich möchte nur Regex verwenden.
Für die zweite Frage entschuldige die Verwirrung.
Ich möchte "b" und "b" wiederholen, nicht "b" zählen.
Hilfe!