有关构造常规表达式的语法和规则的复习。
另请参阅配置分阶段网站的增量索引。
常规表达式的语法
文本 |
任意单个字符 |
|
[字符] |
字符类:字符之一 |
|
[^chars] |
字符类:无字符 |
|
text1|text2 |
备选方案:text1或text2 |
|
量词 |
||
? |
前文的0或1 |
|
* |
0或N(N > 1) |
|
+ |
1或N(N > 1) |
|
分组 |
||
(text) |
文本分组,设置替代项的边框,或返回引用,其中N组用在$N的RewriteRule的RHS上) |
|
锚点 |
||
^ |
开始行锚点。 |
|
$ |
行锚点结尾。 |
|
逃跑 |
||
|
\char |
避开特定的字符。 例如,指定字符“”。[] ()"等。 |
常规表达式
普通字符(不是下面描述的特殊字符之一)是与自身匹配的单字符常规表达式。
反斜杠()后跟任何特殊字符是与特殊字符本身匹配的单字符常规表达式。 特殊字符包括:
.
(句点)、 *
(星号)、 ?
(问号)、 +
(加号)、 [
(左方括号)、 |
(垂直管道)和(反斜 \
线)始终是特殊字符,但方括号内显示的字符除外。
^
(尖号或扬抑符)在常规表达式的开头或紧靠两个方括号左侧时特别。
$
(美元符号)在常规表达式的末尾特别。
.
(period)是与任何字符匹配的单字符常规表达式,包括除新行外的补充代码集字符。
包含在[ ]
(左方括号和右方括号)中的非空字符串是一个字符的常规表达式,它与该字符串中的一个字符(包括补充代码集字符)匹配。
但是,如果字符串的第一个字符是^
(扬抑符),则单字符常规表达式符匹配任何字符,包括补充代码集字符,但新行和字符串中的其余字符除外。
^
仅在字符串中出现时具有此特殊含义。 可以使用-
(减号)来指示一系列连续字符,包括补充代码集字符。 例如,[0-9]等效于[0123456789]。
指定范围的字符必须来自同一代码集。 当字符来自不同的代码集时,将匹配指定范围的字符之一。 如果-
是在字符串中出现的,则它将失去此特殊含义(在初始^
之后,如果有)或最后一个。 如果字符串是字符串中的第一个字符,则]
(右方括号)不终止该字符串(如果有)。 ^
例如,[]a-f]
与]
(右方括号)或ASCII字母a至f(含a)匹配。 上面作为特殊字符列出的四个字符代表在这样的字符串中。
从单字符规则表达式构造规则表达式
您可以使用以下规则从单字符常规表达式构建常规表达式:
*
(星号)是与单字符常规表达式的零个或多个匹配的常规表达式,该字符可以是补充代码集字符。 如果有任何选择,则选择允许匹配的最左边最长的字符串。?
(问号)是与单字符常规表达式的零个或一个匹配的常规表达式,该字符可以是补充代码集字符。 如果有任何选择,则选择允许匹配的最左边最长的字符串。+
(加号)是与单字符常规表达式的一个或多个匹配的常规表达式,该字符可以是补充代码集字符。 如果有任何选择,则选择允许匹配的最左边最长的字符串。{m}
、{m,}
或{m,n}
是与单字符常规表达式的出现范围相匹配的常规表达式。 m和n的值必须是小于256的非负整数;{m}
与m个匹配;{m,}
至少匹配m次;{m,n}
匹配m和n(含m和n)之间的任意次数。 只要存在选择,常规表达式将匹配尽可能多的匹配项。|
(垂直管道)和常规表达式是与第一常规表达式(垂直管道之前)或第二常规表达式(垂直管道之后)匹配的常规表达式。您还可以限制常规表达式,使其仅匹配行的初始段或最终段,或同时匹配两者。
^
(扬抑符)限制该常规表达式与行的初始段匹配。$
(美元符号)限制该常规表达式与行的最终段匹配。您可以使用一些预定义的字符类名称来代替复杂括号内的常规表达式。 例如,数字可以由单字符常规表达式[0-9]或由字符类单字符常规表达式[[:digit:]]表示。
预定义的字符类及其含义如下:
字符类 |
含义 |
---|---|
[[:alnum:]] |
字母字符或数字。 |
[[:alpha:]] |
字母字符。 |
[[:空:]] |
空格或制表符。 |
[[:cntrl:]] |
控制代码;非打印字符。 |
[[:dig:]] |
数字。 |
[[:图表:]] |
除空格外的任何打印字符。 |
[[:小写:]] |
小写字母字符。 |
[[:打印:]] |
任何打印字符,包括空格。 |
[[:分]] |
标点。 |
[[:空格:]] |
空格,如空格、制表符或行尾。 |
[[:上:]] |
大写字母字符。 |
[[:xdig:]] |
十六进制数字,大写或小写。 |
两个特殊字符类名称匹配单词开始和结尾处的空格。 换句话说,它们与实际字符不匹配。 单词被视为字母字符、数字或下划线(_)的任意序列。
字符类 |
含义 |
---|---|
[[:<:]] |
开始 |
[[:>:]] |
词尾 |