我希望下面的代码能回应"是",但事实并非如此.由于某种原因,它与单引号不匹配.为什么?
str="{templateUrl: '}"
regexp="templateUrl:[\s]*'"
if [[ $str =~ $regexp ]]; then
echo "yes"
else
echo "no"
fi
Run Code Online (Sandbox Code Playgroud)
Joh*_*024 55
更换:
regexp="templateUrl:[\s]*'"
Run Code Online (Sandbox Code Playgroud)
附:
regexp="templateUrl:[[:space:]]*'"
Run Code Online (Sandbox Code Playgroud)
根据man bash,=~运营商支持"扩展正则表达式",如中所定义man 3 regex. man 3 regex说它支持POSIX标准并引用读者man 7 regex.POSIX标准支持[:space:]作为空白的字符类.
在GNU bash手册记录了支持的字符类,如下所示:
在'['和']'中,可以使用语法[:class:] 来指定字符类,其中class是POSIX标准中定义的以下类之一:
alnum alpha ascii空白cntrl数字图表下部打印
punct空间上部字xdigit
\s我在GNU bash文档中找到的唯一提及是在提示中使用不相关的,例如PS1,不在正则表达式中.
*[[:space:]]将恰好匹配一个空格字符. [[:space:]]*将匹配零个或多个空格字符.
space和之间的区别blankPOSIX正则表达式提供两类空格:[[:space:]]和[[:blank:]]:
[[:blank:]]表示空格和制表符.这使它类似于:[ \t].
[[:space:]]除了空格和制表符,还包括换行符,换行符,换页符和垂直制表符.这使它类似于:[ \t\n\r\f\v].
使用字符类的一个关键优势是它们对于unicode字体是安全的.
| 归档时间: |
|
| 查看次数: |
44470 次 |
| 最近记录: |