我对 bash 表达式中的正则表达式有 2 个问题。
1.非贪心模式
local temp_input='"a1b", "d" , "45"'
if [[ $temp_input =~ \".*?\" ]]
then
echo ${BASH_REMATCH[0]}
fi
结果是
"a1b", "d" , "45"
在java中
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”。
帮助!