简单的 Bash 正则表达式匹配缺少的字符 (OS X)

Mit*_*del 2 bash regular-expression

我在 OS X 10.11 上匹配 bash 中的正则表达式:

$ msg='[4]  the message'
$  [[ $msg =~ (.+)\t(.+) ]]
$ echo ${BASH_REMATCH[1]}
[4]
$ echo ${BASH_REMATCH[2]}
he message
Run Code Online (Sandbox Code Playgroud)

之间的']''t'$msg是一个制表符。${BASH_REMATCH[1]}或 中没有选项卡${BASH_REMATCH[2]}'t'去哪儿了?

xhi*_*nne 5

't' 位于两个子正则表达式之间:\t,它不被解释为制表,而是解释为t. 一个表格将是$'\t'

试试这个:

$ msg=$'[4]\tthe message'
$ [[ "$msg" =~ (.+)$'\t'(.+) ]]
$ echo ${BASH_REMATCH[1]}
[4]
$ echo ${BASH_REMATCH[2]}
the message
Run Code Online (Sandbox Code Playgroud)