I want to use Bash regex matching (with the =~ operator) to match a string which includes quotes. Say for example I have the following string and I want to extract the text between quotes:
foo='"Hello World!"'
My first try was to put the regex in strong quotes like so to force the quotes to be regular characters.
[[ "$foo" =~ '".*"' ]]
That fails because Bash interprets this as a string match rather than a regex.
Then I tried to escape the quotes with \ like so:
[[ "$foo" =~ \".*\" ]]
That fails (EDIT: Actually, it doesn't. It fails if there's no space between \" and ]] but the version here works just fine.) because the first \ is in plain bash text and fails to escape the quote (I think. The coloring in VIM indicates that the second quote is escaped but not the first and running the script fails).
So is there some way I can escape the " characters without transforming the regex match into a string match?
foo='"Hello World!"'; [[ "$foo" =~ \".*\" ]] && echo "match"works for me, and the Vim syntax highlighting (which by the way does not affect the code in any ways) is fine.