正規表示式匹配
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 …