在Bash正则表达式中,`^`和`$`是指行还是整个字符串?

问题描述 投票:2回答:1

The Linux Documentation Project中(我没有在Bash manual中找到有关正则表达式元字符的详细信息),元字符^$被定义为匹配行:

^:匹配行[...]开头的空字符串$:匹配行尾的空字符串

但是,当我尝试时,这是不正确的:

$ string="a
> b
> c"

$ [[ $string =~ ^a ]] && echo BOS match
BOS match

$ [[ $string =~ ^b ]] && echo BOL match
# nothing

手册是否真的有误,或者我缺少什么?

regex bash internals
1个回答
2
投票

^匹配整个输入字符串的开头,而$匹配整个输入字符串的结尾(在POSIX正则表达式中(Bash使用POSIX ERE))。您链接到的文档中提到行,因为大多数文本处理工具(例如sedgrepawk)默认情况下逐行读取输入,并且在大多数情况下字符串与该行重合。

© www.soinside.com 2019 - 2024. All rights reserved.