我有一個字符串,它是這樣的格式:猛砸正則表達式捕獲組
"Mike H<[email protected]>" [email protected] "Mike H<[email protected]>"
如果我寫的JS,C#等正常的正則表達式,我會做這個
(?:"(.+?)"|'(.+?)'|(\S+))
並重復匹配組以獲取每個字符串,理想情況下不帶引號。我最終想每個值添加到一個數組,所以在本例中,我會在陣列中結束了3項如下:
Mike H<[email protected]>
[email protected]
Mike H<[email protected]>
我不能找出如何與grep
複製這一功能或sed
或bash正則表達式。我試着像
echo "$email" | grep -oP "\"\K(.+?)(?=\")|'\K(.+?)(?=')|(\S+)"
一些事情這樣做的問題是,雖然拍攝組的它種模仿功能,它並沒有真正與倍數工作,所以我得到捕獲像
"Mike
H<[email protected]>"
[email protected]
如果我刪除了前面/後面的邏輯,我至少得到3個字符串,但第一個和最後一個仍然用引號括起來。在這種方法中,我將輸出輸出到read
,這樣我就可以將每個字符串單獨添加到數組中,但我可以使用其他選項。
編輯:
我想我輸入例如可能是混亂的,它只是一個可能的輸入。實際輸入可以是任何數量的任何順序的雙引號,單引號或不引號(不帶空格)的字符串。我提供的Javascript/C#正則表達式是我試圖實現的真正行爲。
請發佈所需的輸出。 – CWLiu
問題已更新爲所需的輸出。 – hakenmt
作爲一個約定,不要使用大寫字母作爲Bash變量,並且在引號中引用它們。 – dawg