支持函数
04-13Ctrl+D 收藏本站
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),封装正则表达式——参见下一节。