Show Menu
主題×

Regular Expressions

關於構造規則運算式的語法和規則的更新。
規則運算式的語法
文字
任何單一字元
[字元]
字元類別:字元之一
[^chars]
字元類別:無字元
text1|text2
替代方案:text1或text2
量詞
?
前文的0或1
*
0或N(N > 1)
+
1或N(N > 1)
分組
(text)
對文本進行分組,以設定替代項的邊框,或在RewriteRule的RHS上使用N組且為$N的位置返回引用)
錨點
^
行錨點的開始。
$
行尾錨點。
逃跑
\char
請逸出特定字元。 例如,要指定字元''。[] ()"等。
規則運算式規則
  • 普通字元(不是下文所述之特殊字元之一)是與自身相符的單字元規則運算式。
  • 反斜線(\)後面跟任何特殊字元是符合特殊字元本身的單字元規則運算式。 特殊字元包括:
    • . (句點)、 * (星號)、 ? (問號)、 + (加號)、 [ (左方括弧)、 | (垂直管道)和 \ (反斜線)都是特殊字元,除非它們出現在方括弧內。
    • ^ (脫字元號或抑揚符號)在規則運算式的開頭或緊接在一對方括弧的左側時特別。
    • $ (美元符號)在規則運算式結尾處是特別的。
    • . (period)是一個單字元的規則運算式,可比對任何字元,包括新行除外的輔助程式碼集字元。
    • 包含在(左方括弧和右方括弧)中的非空字串是一個單字元規則運算式,它與該字串中的一個字元(包括補充代碼集字元)匹配。 [ ]
      但是,如果字串的第一個字元是 ^ (抑揚符號),則單字元規則運算式會比對任何字元,包括輔助程式碼集字元,但字串中新行和其餘字元除外。
      只有在 ^ 字串中首先出現時,才具有此特殊含義。 您可以使 - 用(減號)來指出連續字元的範圍,包括輔助程式碼集字元。 例如, # 等於 #
      指定範圍的字元必須來自相同的程式碼集。 當字元來自不同的程式碼集時,會比對指定範圍的其中一個字元。 如 - 果出現在字串中的第一個(在初始值之後,如 ^ 果有的話)或最後一個,則會遺失此特殊含義。 當字 ] 串是字串中第一個字元時(右方括弧)不會終止此類字串,而是在初始字元後(如果 ^ 有的話)。 例如, #a-f]與(右方括弧) ] 或其中一個ASCII字母a到f(含)匹配。 上面列為特殊字元的四個字元,代表在這樣一串字元中。
從單字規則表達式構造規則表達式的規則
您可以使用下列規則,從單字元規則運算式建構規則運算式:
  • 單字元規則運算式是與單字元規則運算式相符的規則運算式。
  • 一字元規則運算式後接 * (星號)是一個規則運算式,可比對零或多個單字元規則運算式的發生次數,而該運算式可以是輔助程式碼集字元。 如果有任何選擇,則會選擇允許相符項目的最左側最長字串。
  • 一字元規則運算式後接 ? (問號)是一個規則運算式,其與單字元規則運算式的零或一次相符,該運算式可以是輔助程式碼集字元。 如果有任何選擇,則會選擇允許相符項目的最左側最長字串。
  • 一字元規則運算式後接 + (加號)是與一或多個單字元規則運算式相符的規則運算式,該運算式可以是輔助程式碼集字元。 如果有任何選擇,則會選擇允許相符項目的最左側最長字串。
  • 單字元規則運算式後跟 {m} {m,} {m,n} 是符合單字元規則運算式發生範圍的規則運算式。 m和n的值必須是小於256的非負整數; {m} 匹配恰好m次;至少 {m,} 匹配m次;匹 {m,n} 配m和n(含)之間的任意次數。 每當有選項存在時,規則運算式會盡可能多地匹配。
  • 規則運算式的串連是規則運算式,與規則運算式中每個元件所匹配之字串的串連相符。
  • 字元序列(和)之間包含的規則運算式是與任何樸素規則運算式匹配的規則運算式。
  • 規則運算式後接 | (垂直管道)和規則運算式是符合第一個規則運算式(垂直管道之前)或第二個規則運算式(垂直管道之後)的規則運算式。
您也可以限制規則運算式,使其僅匹配線的初始段或最終段,或兩者皆匹配。
  • ^ 則運算式開頭的(抑揚符號)會限制該規則運算式以符合行的初始區段。
  • $ 個規則運算式結尾的(美元符號)會限制該規則運算式以符合行的最後區段。
  • 構造^規則運算式$會限制規則運算式以符合整行。
有些預先定義的字元類別名稱,可用來取代複雜括弧的規則運算式。 例如,一個數字可以用單字元規則運算式 # ,或用字元類單字元規則運算式[ #]表示。
預定義字元類及其含義如下:
字元類別
含義
[[:alnum:]]
字母字元或數字。
[[:alpha:]]
字母字元。
[[:空白:]]
空格或標籤。
[[:cntrl:]]
控制碼;非列印字元。
[[:dig:]]
數字。
[[:圖:]]
任何列印字元(空格除外)。
[[:lower:]]
小寫字母字元。
[[:打印:]]
任何列印字元,包括空格。
[[:punct:]]
標點符號。
[[:空格:]]
空格,例如空格、標籤或行尾。
[[:上:]]
大寫字母字元。
[[:xdig:]]
十六進位數字,大寫或小寫。
兩個特殊字元類名稱與單字開頭和結尾處的空值空格相匹配。 換言之,它們不符合實際字元。 單字被視為字母字元、數字或下划線(_)的任意序列。
字元類別
含義
[[:<:]]
一字開頭
[[:>:]]
結尾