WEB开发网
开发学院软件开发C语言 C#正则表达式高级技巧及实例详解 阅读

C#正则表达式高级技巧及实例详解

 2009-06-10 08:32:04 来源:WEB开发网   
核心提示: 7. 回调(Callbacks)匹配结果中的特定内容有时可能会需要某种特别的修改,要应用多重而复杂的修改,C#正则表达式高级技巧及实例详解(7),正则表达式的回调就有了用武之地,回调是用于函数preg_replace_callback中的动态修改字串的方式,更多资源(英文)Regular-

7. 回调(Callbacks)

匹配结果中的特定内容有时可能会需要某种特别的修改。要应用多重而复杂的修改,正则表达式的回调就有了用武之地。回调是用于函数preg_replace_callback中的动态修改字串的方式。你可以为preg_replace_callback指定某个函数为参数,此函数能接收匹配结果数组为参数,并将数组修改后返回,作为替换的结果。

例如,我们想将某字串中的字母全部转变成大写。十分不巧,PHP没有直接转化字母大小写的正则操作符。要完成这项任务,就可以用到正则回调。

首先,表达式要匹配出所有需要被大写的字母:

/\b\w/

上式同时使用了字词边界和字符类。光有这个式子还不够,我们还需要一个回调函数:

function upper_case( $matches ) {

return strtoupper( $matches[0] );

}

函数upper_case接收匹配结果数组,并将整个匹配结果转化成大写。 在此例中,$matches[0]代表需要被大写化的字母。然后,我们再利用preg_replace_callback实现回调:

preg_replace_callback( '/\b\w/', "upper_case", $str );

一个简单的回调即有这般强大的力量。

8. 注释(Commenting)

注释不用来匹配字串,但确实是正则表达式中最重要的部分。当正则越写越深入,越写越复杂,要推译出究竟什么东西被匹配就会变得越来越困难。在正则表达式中间加上注释,是最小化将来的迷糊和困惑的最佳方式。

要在正则表达式内部加上注释,使用(?#comment)格式。把“comment”替换成你的注释语句:

/(?#数字)\d/

如果你打算把代码公之于众,为正则表达式加上注释就显得尤为重要。这样别人才能更容易看懂和修改你的代码。和其他场合的注释一样,这样做也能为你重访自己以前写的程序时提供方便。

考虑使用“x”或“(?x)”修改器来格式化注释。这个修改器让正则引擎忽略表达式参数之间的空格。“有用的”空格仍然能够通过[ ]或\s,或者\ (反义符加空格)来匹配。

/

\d    #digit

[ ]   #space

\w+   #word

/x

上面的代码与下面的式子作用一样:

/\d(?#digit)[ ](?#space)\w+(?#word)/

请时刻注意代码的可读性。

更多资源(英文)

Regular-Expressions.info Comprehensive website on regular expressions Cheat SheetInformative regular expressions cheat sheet Regex GeneratorJavaScript regular expressions generator 关于作者

Karthik Viswanathan 是一个喜欢编程和做网站的高中生。你可以到他的博客上查看他的作品:Lateral Code。你也可以关注一下他的线上Twitter应用。

上一页  2 3 4 5 6 7 

Tags:正则 表达式 高级

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接