У меня есть 2 вопроса о регулярном выражении в выражении bash.
regex in bash выражение
1.Non-жадные Режим
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.global соответствует
local temp_input='abcba'
if [[ $temp_input =~ b ]]
then
#I wanna echo 2 b here.
#How can I set the global flag?
fi
Как я могу получить все матчи
пс:.? Я только хочу использовать регулярное выражение
Что касается второго вопроса. , извините за путаницу.
Я хочу повторить «б» и «б», не считать «Ъ».
Помощь!
Регулярные выражения 'bash' не имеют жадного режима. См. 'Man 7 regex' для того, что поддерживается. – chepner
@chepner Спасибо за помощь. Я также ничего не знаю о не-жадном режиме в конкретном. Я думаю ты прав. –