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

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

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

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

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

答案1

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

试试这个:

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

相关内容