我想使用Bash正則表達式匹配(使用=〜運算符)來匹配包含引號的字符串。我想提取引號之間的文本:使用Bash正則表達式匹配(=〜)其中正則表達式包含引號(「字符)
foo='"Hello World!"'
我的第一次嘗試是把正則表達式強引號,像這樣給力的報價是常規字符
[[ "$foo" =~ '".*"' ]]
失敗,因爲Bash解釋這是一個字符串匹配而不是正則表達式。
然後我試圖使用\引號,像這樣:
[[ "$foo" =~ \".*\" ]]
失敗(編輯:其實,事實並非如此。它會失敗,如果在\「和]之間沒有空格,但這裏的版本工作得很好),因爲第一個\是在純bash文本中,並且無法轉義引號(我認爲,VIM中的着色表示第二個引號是逃脫但不是第一個,運行腳本失敗)
那麼有什麼辦法可以逃避「字符而不將正則表達式匹配轉換爲字符串匹配?
'foo ='「Hello World!」'; [[「$ foo」=〜\「。* \」]] && echo「match」適用於我,Vim語法突出顯示(順便說一句,不會以任何方式影響代碼)很好。 –
用一粒鹽來突出語法,特別是在正則表達式周圍。大多數語法高亮引擎不是強大的詞法分析器或解析器,並且(最相關的)不是與要讀取代碼的實際解釋器所使用的* same *詞法分析器或解析器。 – kojiro
啊,這個問題顯然是我在真正的程序中使用它之後沒有在\「和\]之間使用空格,Bash以混亂的方式處理空格 – DroidFreak