Regular Expressions(正規式)

regular 是「有規則可循的」,將這個規則性找出來,再套用到字串比對有沒有符合規則的資料,就是 regular expression。

中文是字面上看不出什麼意思的「正規表示法」「正則表達式」,其實功能就是:「表達某種規律形式的詞句,以比對出符合這種規律形式的資料來用。」


語法


符號

.任意字元,包括空白字元
[]字元集合
-用在 [] 裡面表示字元範圍
()用在 [] 裡面表示字串
|
^以文字開頭,用在 [] 裡面表示否定
$以文字結尾
?0 或 1 次
*0 或多次
+1 或多次
{,}幾次

跳脫字元

\eEscape
\nNew line
\rEnter
\tTab
\fForm feed
\000 到 \777以八進位值表示字元
\x00 到 \xFF以十六進位表示字元
\符號正規式用到符號
\d相當於 [0-9]
\D相當於 [^0-9]
\w相當於 [0-9a-zA-Z_]
\W相當於 [^0-9a-zA-Z_]
\s相當於 [\f\n\r\t]
\S相當於 [^\f\n\r\t]

選項

g匹配所有資料(不因匹配到資料就停止匹配其它資料)
i不分大小寫
m匹配多行資料
u匹配 Unicode 字元

實例

ABCABC
^ABC以 ABC 開頭
ABC$以 ABC 結尾
A.CA + 任意一個字元 + C
A.*CA + 任意多個字元 + C
ABC|DEFABC 或 DEF
[ABC]A 或 B 或 C
A[XYZ]CAXC AYC AZC
A[X-Z]CAXC AYC AZC
A[^XYZ]CA + XYZ 以外的字元 + C
[(ABC)]ABC
[\u4e00-\u9fa5]中文漢字,搜尋範圍是「一」到「龥」
A{3}AAA
A{2,4}AA AAA AAAA
A{2,}最少兩個 A
A{,4}最多四個 A
AB{3}CABBBC
A.{3}CA + 任意三個字元 + C
A[XYZ]{3}CA + 任意三個 X 或 Y 或 Z + C
AB?CAC 或 ABC
AB+CA + 多個 B + C
AB*CAC 或 A + 多個 B + C