栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Bash脚本模式匹配

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Bash脚本模式匹配

使用字符类:

[0-9]
比赛
0
9
和在字符集之间的每一个字符,这-至少在Unipre和子集的字符集(US-ASCII,拉丁语1,UTF-8)
-是数字
1
通过
8
。因此,它匹配10个拉丁数字中的任何一个。

if [[ $var1 == *,123[0-9][0-9][0-9],* ]] ; then echo "Pattern matched"; fi

使用

=~
而不是
==
将模式类型从外壳标准“ glob”模式更改为正则表达式(简称“ regexes”)。您可以使等效的正则表达式短一些:

if [[ $var1 =~ ,123[0-9]{3}, ]] ; then echo "Pattern matched"; fi

第一个缩写来自这样一个事实,即正则表达式只必须匹配字符串的任何部分,而不是整个字符串。因此,您不需要

*
在glob模式中找到与之等效的前导和尾随。

第二个长度减少是由于

{n}
语法所致,它使您可以指定前一个模式的精确重复次数,而不必在正则表达式中实际重复模式本身。(您还可以通过指定最小值和最大值
[0-9]{2,4}
来匹配任意范围的重复计数,例如连续匹配两位,三位或四位数字。)

值得注意的是,您也可以使用命名字符类来匹配数字。根据您的语言环境,它

[[:digit:]]
可能与完全等效
[0-9]
,或者可能包含来自其他脚本的具有Unipre“数字,十进制数字”属性的字符。

if [[ $var1 =~ ,123[[:digit:]]{3}, ]] ; then echo "Pattern matched"; fi


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377013.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号