有关构造正则表达式的语法和规则的复习。
另请参阅配置分阶段网站的增量索引。
常规表达式的语法
文本 |
任意单个字符 |
|
[字符] |
字符类:字符之一 |
|
[^chars] |
字符类:无字符 |
|
text1|text2 |
替代:text1或text2 |
|
量词 |
||
? |
前文的0或1 |
|
* |
0或前面的文本的N(N > 1) |
|
+ |
前面的文本的1或N(N > 1) |
|
分组 |
||
(text) |
文本分组,设置替代项的边框,或返回引用,其中N组用于$N的RewriteRule的RHS上) |
|
锚点 |
||
^ |
开始行锚点。 |
|
$ |
行锚点结束。 |
|
逃跑 |
||
|
\char |
避开特定字符。 例如,指定字符“”。[] ()"等。 |
常规表达式规则
普通字符(不是下面描述的特殊字符之一)是与自身匹配的单字符常规表达式。
反斜杠()后跟任何特殊字符是与特殊字符本身匹配的单字符常规表达式。 特殊字符包括:
.
(句点)、 *
(星号)、 ?
(问号)、 +
(加号)、 [
(左方括号)、 |
\
(垂直管道)和(反斜杠)始终是特殊字符,但方括号内显示的字符除外。
^
(尖角或绕圆弧)在常规表达式的开头或紧靠两个方括号的左侧时特别。
$
(美元符号)在常规表达式结束时特别。
.
(句点)是与任何字符匹配的单字符常规表达式符,包括新行除外的补充代码集字符。
包含在[ ]
(左方括号和右方括号)中的非空字符串是与该字符串中的一个字符(包括补充代码集字符)匹配的单字符常规表达式。
但是,如果字符串的第一个字符是^
(外框),则单字符常规表达式符匹配任何字符,包括补充代码集字符,但新行和字符串中的其余字符除外。
^
仅在字符串中出现时具有此特殊含义。 可以使用-
(减号)来指示连续字符的范围,包括补充代码集字符。 例如,[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:]] |
控制代码;非打印字符。 |
[[:digit:]] |
数字。 |
[[:graph:]] |
除空格外的任何打印字符。 |
[[:小写:]] |
小写字母字符。 |
[[:打印:]] |
任何打印字符,包括空格。 |
[[:punct:]] |
标点。 |
[[:空格:]] |
空白,如空格、制表符或行尾。 |
[[:upper:]] |
大写字母字符。 |
[[:xdigit:]] |
十六进制数字,大写或小写。 |
两个特殊字符类名称匹配单词开始和结尾处的空格。 换句话说,它们与实际字符不匹配。 单词被视为字母字符、数字或下划线(_)的任意序列。
字符类 |
含义 |
---|---|
[[:<:]] |
单词开始 |
[[:>:]] |
词尾 |