2023年3月31日

難懂的密碼? 初探神奇的 regex 語法

 regex 語法

正規表達式(Regular Expression,簡稱 regex)是一種用於描述字串規律的表示法,可應用在文本搜索、替換、驗證、分割等各種字串操作中。Regex 語法是由特殊字符和普通字符組成的,其主要作用是匹配目標字串中符合特定規律的子字串。最後介紹一些常見的 regex 語法。

使用情境:

我有多個考題,文字格式如下:

1. 若一虛無假設H0: μ = h,若 t 檢定之值 = tB,而查表得知臨界值為 tr>,且 |tB| > tR,則我們可以推論?
a. 無法拒絕此虛無假設
b. 要再進行另一個檢定才能判定
c. 應拒絕此虛無假設
d. 該檢定是偽陽性

2. 利用p值判斷時,若主觀顯著水準 = 5%,則某一檢定之 p 值 = 0.08 時,我們可以推論?
a. 應拒絕此虛無假設
b. 要再進行另一個檢定才能判定
c. 無法拒絕此虛無假設
d. 該檢定是偽陰性


我想將題目獨立一行,4個答項合併成一行,用 regex 語法來取代

(a) 搜尋以 b. c. d. 為開頭的 regex 

\n([b-d]\.)\s*

這意思是,是用來匹配以 b.、c.、d. 開頭的一行文本,並將其與下一行文本合併為同一行。

具體來說,這個正則表達式包含了以下部分:

  • \n:匹配換行符(newline)。
  • ([b-d].):匹配以 a.、b.、c.、d. 開頭的字串,其中 [a-d] 匹配 a 到 d 之間的任何一個字符,. 匹配一個句點。
  • \s*:匹配零個或多個空白字符(包括空格、制表符等)。

(b) 將使用了'(\1)',表示插入捕獲組所匹配到的文本

結果:

1. 若一虛無假設H0: μ = h,若 t 檢定之值 = tB,而查表得知臨界值為 tr>,且 |tB| > tR,則我們可以推論? (a. ) 無法拒絕此虛無假設 (b. ) 要再進行另一個檢定才能判定 (c. ) 應拒絕此虛無假設 (d. ) 該檢定是偽陽性
2. 利用p值判斷時,若主觀顯著水準 = 5%,則某一檢定之 p 值 = 0.08 時,我們可以推論? (a. ) 應拒絕此虛無假設 (b. ) 要再進行另一個檢定才能判定 (c. ) 無法拒絕此虛無假設 (d. ) 該檢定是偽陰性

可是,還不確定b.後為何多了一個空格

常用 regex 語法解釋

1. 字符集合:使用方括號表示一組可能的字符。例如,[abc] 表示匹配字符 a、b、c 中的任意一個字符。

2. 點:用點符號 . 表示任何一個字符。

3. 重複:用花括號 {} 表示某個字符出現的次數。例如,a{3} 表示匹配三個 a。

4. 或:使用竖线符號 | 表示“或”關係。例如,a|b|c 表示匹配 a 或 b 或 c。

5. 開始和結束:使用^表示字串開始位置,$表示字串結束位置。例如,^abc 表示匹配以 abc 開始的字串。

6. 分組:使用小括號 () 將多個字符分成一組。例如,(abc)+ 表示匹配一個或多個由 abc 組成的字串。

7. 通配符:在字符集合中使用 ^ 表示除了某個字符之外的其他字符。例如,[^abc] 表示匹配除了 a、b、c 以外的任意字符。

8. 轉義:有些字符具有特殊意義,在正則表達式中需要使用反斜杠 \ 轉義才能表示其本身。例如,\d 表示匹配任意一個數字字符。