概述:正则表达式通常称为regex,它是一个文本字符串,使用了称为文本模式的特殊格式。正则表达式用来定义匹配或转化字符串的规则,它们是现在可用的最强大的问题维护工具之一。
常用的元字符:
(1) ^:匹配每一行的开始
(2) .:匹配任何一个单字符。
(3) *:其之前的字符或表达式将重复0次或多次。
(4) *:其之前的字符或表达式将重复1次或多次。(至少出现一次)
(5) *:其之前的字符或表达式将重复0次或1次。(可选的)
(6) {m,n}:其之前的字符或表达式将重复m到n次;m和n都是整数,而且必须小于n
(7) ():圆括号用来定义一个已捕获的表达式。
(8) []:用来定义一个字符集;[^]:与[]类似,只不过它匹配的是该范围之外的字符。
(9) $ :匹配行尾。
(10)\ :转义其后续的字符。
.NET中正则表达式封装(6个类一个委托)功能:
(1) 类 - Regex :执行正则表达式操作的类。他可以被实例化,以用来表示正则表达式的已编译实例,或者用来执行相同的操作的静态方法。
(2) 类 - Capture :表示单次匹配的结果;类 - CaptureCollection :表示Capture对象的结果。
(3) 类 - Group :用来表示一个捕获组(正则表达式中圆括号中的表达式)的结果,表达形式是CaptureCollection对象;类 - GropuCollection :表示Group对象的集合。
(4) 类 - Match :表示单个正则表达式匹配的结果。它通过Captures成员提供捕获功能,并返回一个CaptureCollection对象,通过Group成员提供捕获组,它将返回一个GroupCollection对象。 类 - MatchCollection:表示Match对象的集合。
(5) 委托 - MatchEvaluator :一个委托,可以在执行基于正则表达式的文本替换操作时使用。
分组:用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了
利用正则表达式实现URL重定向功能:
<rewriter>
<rewrite url="/my-super-product.aspx" to="~/Product.aspx?ProductID=1"/>
<!-- Rewrite department pages -->
<rewrite url ="^.*-d([0-9]+)/?$" to="~/Catalog.aspx?DepartmentID=$1" processing="stop" />
<rewrite url ="^.*-d([0-9]+)/page-([0-9]+)/?$" to="~/Catalog.aspx?DepartmentID=$1&Page=$2" processing="stop" />
<!-- Rewrite category pages -->
<rewrite url ="^.*-d([0-9]+)/.*-c([0-9]+)/?$" to="~/Catalog.aspx?DepartmentId=$1&CategoryId=$2" processing="stop" />
<rewrite url ="^.*-d([0-9]+)/.*-c([0-9]+)/page-([0-9]+)/?$" to="~/Catalog.aspx?DepartmentId=$1&CategoryId=$2&Page=$3" processing="stop" />
<!-- Rewrite product details pages -->
<rewrite url="^.*-p([0-9]+)/?$" to="~/Product.aspx?ProductId=$1" processing="stop" />
</rewriter>
以<rewrite url ="^.*-d([0-9]+)/.*-c([0-9]+)/page-([0-9]+)/?$" to="~/Catalog.aspx?DepartmentId=$1&CategoryId=$2&Page=$3" processing="stop" />为例
说明:表达式以^字符开始,用来匹配URL的开头。字符.*用来匹配由0个或多个字符组成的字符串,因为圆点可以匹配任何字符,星号表示之前的字符或表达式将重复0次或多次。接下来-d[0-9]则匹配0到9之间的数字(也就是所有数字),后面跟着+号,表示该模式可以重复1次或多次,也就是可以是多位数字而不一定是以位。将[0-9]+放在圆括号中,表示正则表达式引擎将匹配的字符串保存到名为$1的变量中。