Linux

Bash 程式設計教學與範例:正規表示法比對字串

介紹如何在 Bash 指令稿中使用正規表示法(regular expression)匹配字串。

正規表示法比對字串

在 Bash 指令稿中若需要使用到正規表示法(regular expression)來比對字串內容,可以透過雙中括號搭配 =~ 運算子的方式:

# 含有文字的變數
str="Hello, world."

# 以正規表示法比對字串
if [[ $str =~ ^Hello ]];
then
  echo "比對成功。"
else
  echo "比對失敗。"
fi
比對成功。

如果只需要在匹配成功時,執行指定的動作,可以使用以下這種簡潔的寫法:

# 簡潔的寫法
[[ $str =~ ^Hello ]] && echo "比對成功。"
比對成功。

取得匹配成功的字串

在以正規表示法匹配字串時,如果想要取得匹配成功的文字內容,可以使用小括號將要擷取的部分包起來,並透過 BASH_REMATCH 這個特殊變數來取得匹配結果:

# 含有文字的變數
str="John Smith"

# 以正規表示法比對字串
if [[ $str =~ ^([A-Za-z]+) ([A-Za-z]+)$ ]];
then
  echo "完整比對字串:${BASH_REMATCH[0]}"
  echo "第 1 部分字串:${BASH_REMATCH[1]}"
  echo "第 2 部分字串:${BASH_REMATCH[2]}"
else
  echo "比對失敗。"
fi
完整比對字串:John Smith
第 1 部分字串:John
第 2 部分字串:Smith

若以正規表示法比對成功時,BASH_REMATCH[0] 就會包含整個正規表示法所比對到的字串內容,而 BASH_REMATCH[1]BASH_REMATCH[2] 就會包含第一個與第二個小括號所對應的內容,若有更多小括號則以此類推。

Share
Published by
Office Guide
Tags: Bash

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago