什麼是正規表示式

以符號組合來表示字串樣式的寫法。. 表示任意一個字元,* 表示前一個元素重複0次以上,^ 與 $ 表示行首與行尾,[abc] 表示方括號中的任一個字元,用於 grep、sed、awk 等指令以及許多程式語言的搜尋與取代。grep 的基本正規表示式(BRE)與可直接使用 +、?、| 的延伸正規表示式(grep -E,ERE),在部分符號的處理上有所不同。它與 shell 的萬用字元(*.txt 等)不同,* 的意義也不一樣。

日文名稱: 正規表現

「正規表示式」出現在2領域的4道練習題中(編譯器, Linux與命令列基礎等)。

這個名詞所屬的領域: Linux與命令列基礎

練習正規表示式的題目

關於編譯器詞法分析的作用,下列何者正確?

  1. A以樹狀結構檢查程式的敘述是否符合語言的文法
  2. B將原始碼的字元序列切分為識別字與運算子等token(詞元)
  3. C檢查變數的型別是否一致,以及是否使用了未定義的名稱
查看答案與解析

正確答案:B. 將原始碼的字元序列切分為識別字與運算子等token(詞元)

詞法分析是編譯器的第一個階段,例如會將「count = count + 1;」切分為識別字count、符號=、識別字count、符號+、數值1、符號;這些token。空白與註解也會在這個階段移除。token的規則可以用正規表示式描述,因此能以有限自動機高速處理。以樹狀結構檢查是否符合文法的是下一階段的語法分析,檢查型別與名稱的則是語意分析的工作。

在詞法分析中,常用來表示辨識token之規則的是下列何者?

  1. A浮點數的捨入規則
  2. B正規表示式,以及處理它的有限自動機
  3. C快取的置換規則
查看答案與解析

正確答案:B. 正規表示式,以及處理它的有限自動機

token的種類可以用正規表示式簡潔地描述,例如識別字是「以英文字母開頭、後面接英數字」,數值是「一個以上的數字連續出現」。正規表示式可以轉換成有限自動機(狀態數目有限的機器),每讀入一個字元就轉移一次狀態,便能在與輸入長度成正比的時間內切出token。因此詞法分析器也常以能從正規表示式自動產生的工具來製作。捨入與快取的規則與詞法分析無關。

解析中的「正規表示式」

出現「正規表示式」的題目(4題)

  1. 關於編譯器詞法分析的作用,下列何者正確?
  2. 在詞法分析中,常用來表示辨識token之規則的是下列何者?
  3. 下列何者是用來表示許多程式語言的文法、並成為語法分析之基礎的文法種類?
  4. 在上面的操作中,最後的 grep 輸出的行是下列何者?

相關名詞

詞法分析 語法分析 grep 訊號(Unix) 符號連結 硬連結 超級使用者 管線(|) 輸入輸出重新導向 檔案權限

前往名詞解釋列表