![简单的 Bash 正则表达式匹配缺失的字符 (OS X)](https://linux22.com/image/107991/%E7%AE%80%E5%8D%95%E7%9A%84%20Bash%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D%E7%BC%BA%E5%A4%B1%E7%9A%84%E5%AD%97%E7%AC%A6%20(OS%20X).png)
我在 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