首页 » 精通正则表达式(第3版) » 精通正则表达式(第3版)全文在线阅读

《精通正则表达式(第3版)》支持函数

关灯直达底部

Support Functions

除了之前讨论过的便捷函数,还有一些静态的支持函数:

Regex.Escape(string)

Regex.Escape(…)返回此字符串的副本,其中的元字符会进行转义。这样处理的字符串就能够作为文字字符串供正则表达式使用。

例如,如果用户的输入保存在字符串SearchTerm中,我们可以这样构建正则表达式:

这样,用户输入的元字符就不会被特殊处理了。如果不转义,假设用户输入了‘:-)’,就会抛出ArgumentException异常(☞419)。

Regex.Unescape(string)

这个函数有点奇怪,它接收一个字符串,返回此字符串的副本,不过要处理其中的元字符,去掉其他的反斜线。如果输入的是‘/:/-/)’,返回值就是‘:-)’。

字符缩略表示法也会被解码。接收的字符串中的‘/n’会被替换为换行符,‘/u1234’会被替换为对应的Unicode字符。第407页列出的所有字符缩略表示法都会被处理。

我想象不出 Regex.Unescape 有多么重要的价值,不过了解转义规定的用户也许能把它当作生成VB字符串的通用工具。

Match.Empty

此函数返回代表匹配失败的Match对象。它的用处可能在于,如果初始化的某个Match对象将来不一定会被用到,但又必须能够查询。这里有个简单的例子:

如果字符串数组EmailHeaderLines没有任何行(或者没有Subject行),程序中的循环就不会设置 SubMatch,如果 SubMatch没有初始化,循环之后检查 SubMatch会得到一个空引用异常。这种情况下用Match.Empty来初始化就很方便。

Regex.CompileToAssembly(…)

它容许用户创造一个装配件(assembly),封装正则表达式——参见下一节。