Regular Expressions

關於構造規則運算式的語法和規則的更新。

另請參 閱配置分段網站的增量索引

規則運算式的語法

文字

任何單一字元

[字元]

字元類別:字元之一

[^chars]

字元類別:無字元

text1|text2

替代方案:text1或text2

量詞

?

前文的0或1

*

0或N(N > 1)

+

1或N(N > 1)

分組

(text)

對文本進行分組,以設定替代項的邊框,或在RewriteRule的RHS上使用N組且為$N的位置返回引用)

錨點

^

行錨點的開始。

$

行尾錨點。

逃跑

\char

請逸出特定字元。 例如,要指定字元''。[] ()"等。

規則運算式規則

  • 普通字元(不是下文所述之特殊字元之一)是與自身相符的單字元規則運算式。

  • 反斜線()後面跟任何特殊字元是符合特殊字元本身的單字元規則運算式。 特殊字元包括:

    • . (句點)、 * (星號)、 ? (問號)、 + (加號)、 [ (左方括弧)、 | (垂直管道)和 \ (反斜線)都是特殊字元,除非它們出現在方括弧內。

    • ^ (脫字元號或抑揚符號)在規則運算式的開頭或緊接在一對方括弧的左側時特別。

    • $ (美元符號)在規則運算式結尾處是特別的。

    • . (period)是一個單字元的規則運算式,可比對任何字元,包括新行除外的輔助程式碼集字元。

    • 包含在(左方括弧和右方括弧)中的非空字串是一個單字元規則運算式,它與該字串中的一個字元(包括補充代碼集字元)匹配。 [ ]

      但是,如果字串的第一個字元是 ^ (抑揚符號),則單字元規則運算式會比對任何字元,包括輔助程式碼集字元,但字串中新行和其餘字元除外。

      只有在 ^ 字串中首先出現時,才具有此特殊含義。 您可以使 - 用(減號)來指出連續字元的範圍,包括輔助程式碼集字元。 例如, [0-9] 等於 [0123456789]。

      指定範圍的字元必須來自相同的程式碼集。 當字元來自不同的程式碼集時,會比對指定範圍的其中一個字元。 如 - 果出現在字串中的第一個(在初始值之後,如 ^果有的話)或最後一個,則會遺失此特殊含義。 當字 ] 串是字串中第一個字元時(右方括弧)不會終止此類字串,而是在初始字元後(如果 ^有的話)。 例如, []a-f] 匹配(右方 ] 括弧)或其中一個ASCII字母a到f inclusive。 上面列為特殊字元的四個字元,代表在這樣一串字元中。

從單字規則表達式構造規則表達式的規則

您可以使用下列規則,從單字元規則運算式建構規則運算式:

  • 單字元規則運算式是與單字元規則運算式相符的規則運算式。
  • 一字元規則運算式後接 * (星號)是一個規則運算式,可比對零或多個單字元規則運算式的發生次數,而該運算式可以是輔助程式碼集字元。 如果有任何選擇,則會選擇允許相符項目的最左側最長字串。
  • 一字元規則運算式後接 ? (問號)是一個規則運算式,其與單字元規則運算式的零或一次相符,該運算式可以是輔助程式碼集字元。 如果有任何選擇,則會選擇允許相符項目的最左側最長字串。
  • 一字元規則運算式後接 + (加號)是與一或多個單字元規則運算式相符的規則運算式,該運算式可以是輔助程式碼集字元。 如果有任何選擇,則會選擇允許相符項目的最左側最長字串。
  • 單字元規則運算式後跟 {m}{m,}{m,n} 是符合單字元規則運算式發生範圍的規則運算式。 m和n的值必須是小於256的非負整數; {m} 匹配恰好m次; {m,} 匹配至少m次; {m,n} 匹配m和n(含)之間的任意次數。 每當有選項存在時,規則運算式會盡可能多地匹配。
  • 規則運算式的串連是規則運算式,與規則運算式中每個元件所匹配之字串的串連相符。
  • 字元序列(和)之間包含的規則運算式是與任何樸素規則運算式匹配的規則運算式。
  • 規則運算式後接 | (垂直管道)和規則運算式是符合第一個規則運算式(垂直管道之前)或第二個規則運算式(垂直管道之後)的規則運算式。

您也可以限制規則運算式,使其僅匹配線的初始段或最終段,或兩者皆匹配。

  • ^ 則運算式開頭的(抑揚符號)會限制該規則運算式以符合行的初始區段。
  • $ 個規則運算式結尾的(美元符號)會限制該規則運算式以符合行的最後區段。
  • 構造^規則運算式$會限制規則運算式以符合整行。

有些預先定義的字元類別名稱,可用來取代複雜括弧的規則運算式。 例如,一個數字可以用單字元規則運算式 [0-9] ,或用字元類單字元規則運算式[[:digit:]]表示。

預定義字元類及其含義如下:

字元類別

含義

[[:alnum:]]

字母字元或數字。

[[:alpha:]]

字母字元。

[[:空白:]]

空格或標籤。

[[:cntrl:]]

控制碼;非列印字元。

[[:dig:]]

數字。

[[:圖:]]

任何列印字元(空格除外)。

[[:lower:]]

小寫字母字元。

[[:打印:]]

任何列印字元,包括空格。

[[:punct:]]

標點符號。

[[:空格:]]

空格,例如空格、標籤或行尾。

[[:上:]]

大寫字母字元。

[[:xdig:]]

十六進位數字,大寫或小寫。

兩個特殊字元類名稱與單字開頭和結尾處的空值空格相匹配。 換言之,它們不符合實際字元。 單字被視為字母字元、數字或下划線(_)的任意序列。

字元類別

含義

[[:<:]]

一字開頭

[[:>:]]

結尾

本頁內容