我想检查一下括号内的内容。例如说我有这个
12($s0)
加载到数组中。
现在,我想跳过起始位12(
和最后一位)
,只检查其长度为$s0
。
我不想删除开头和结尾的内容,只想查看它们之间的内容。
我将如何使用bash进行操作?
答案 0 :(得分:0)
您可以编写一个正则表达式来捕获括号之间的内容,然后检查该捕获组的长度:
$ str='12($s0)'
$ re='\(([^)]*)\)'
$ [[ $str =~ $re ]]
$ echo "${#BASH_REMATCH[1]}"
3
正则表达式在开头和结尾使用文字原义(\(...\)
);它们之间的所有内容都在一个捕获组((...)
)中。捕获的模式是“零个或多个不是右括号的字符”:[^)]*
。
将正则表达式与=~
运算符匹配时,捕获组存储在BASH_REMATCH
数组中。索引0包含完全匹配项,索引1及以上包含捕获组。我们对第一个感兴趣,并在扩展中使用#
来获取字符串的长度。