正则表达式匹配
pat='[^0-9]+([0-9]+)'
s='I am a string with some digits 1024'
[[ $s =~ $pat ]] # $pat must be unquoted
echo "${BASH_REMATCH[0]}"
echo "${BASH_REMATCH[1]}"
输出:
I am a string with some digits 1024
1024
我们也可以这样做,而不是将正则表达式赋值给变量($pat
):
[[ $s =~ [^0-9]+([0-9]+) ]]
说明
[[ $s =~ $pat ]]
构造执行正则表达式匹配- 捕获的组即匹配结果在名为 BASH_REMATCH 的数组中可用 **
- BASH_REMATCH 数组中的第 0 个索引是总匹配
- 第 i 个指数中 BASH_REMATCH 阵列是第 i 个捕获基团,其中我 = 1,2,3 …