摘要: 好吧,到目前为止,貌似只有搜索的,那我要是想替换原始字符串中的某个部分怎么办呢?嗯,本章就是为了解决这个问题存在的。要使用替换功能,请使用微软提供的 Regex.Replace() 方法,记得引用 using System.Text.RegularExpressions 命名空间先来看两个简单的替换:表达式含义$分组编号将搜索到的结果替换为编号为 1 的组${分组名称}将搜索到的结果替换为该名称所在的组例子 1原始字符串:$16.32 12.19 £16.29 €18.29€18,29正则表达式:\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*替换表达式:$1本例子的作用 阅读全文
posted @ 2013-03-09 14:55 优秀程序缘 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 分组搜索么,听上去好像比较高深,其实没什么了,说白了,就是用圆括号 ( ) 将表达式中的一部分括起来,每一个括起来的表达式就是一个组,所以叫分组。使用分组,我们可以实现更牛X的搜索,继续看吧:表达式含义举例(xx|yy)搜索的字符中或者包含xx,或者包含yy原始字符串:The gray wolf is behind the grey rock.正则表达式:\bgr(a|e)y\b搜索结果: gray, grey(正则表达式)\编号通过编号引用组。编号从 1 开始,按照从左到右的顺序,每遇到一个 (,就将该组的编号加 1。(编号为 0 的组在哪里?完整的表达式就是编号为 0 的组喽)原始字符串: 阅读全文
posted @ 2013-03-09 14:54 优秀程序缘 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 嗯,到了这时候,估计你该有一个疑问了,前面的搜索,貌似一次只能搜到一个字符或者一个单词,比如那个 Call me if you want: 889-45628 的例子,用 \d 倒是可以搜索到电话号码,但是……搜索结果是 8,8,9,4,5,6,2,8 这样的,太矬了吧?就不能一次把整个电话号码提取出来么?当然可以了,看完本章,你就会了。表达式含义例子*0次或多次。等价于{0,}。原始字符串:Call me if you want: 889-45628-正则表达式:\d*-\d*-\d*搜索结果:889-45628-解释:\d 搜索数字,*限定该数字出现 0 次或者多次。+1 次或多次。等价于 阅读全文
posted @ 2013-03-09 14:53 优秀程序缘 阅读(1352) 评论(0) 推荐(0) 编辑
摘要: 本章来看看怎样用位置标示符来限定搜索的位置。先来看三个简单的位置标示^ : 字符串的开头$ :字符串的结尾\b :单词的边界处(即单词的开头和结尾)例 子1原始字符串: can you do this? yes, I can.正则表达式: ^can搜索结果:参见粗体字上面的例子中,要搜索 can,可以看到,原始字符串中有两个 can,但是搜索的结果只有开头的一个,这就是 ^ 的作用了,表示的是在开头处搜索,所以后一个 can 会被忽略。例子 2原始字符串: can you do this? yes, I can.正则表达式: can$搜索结果:参见粗体字这个例子正好和 例子 1 相反,$表示的 阅读全文
posted @ 2013-03-09 14:52 优秀程序缘 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 上一章介绍了转义,但是好像只能精确搜索某些字符,针对范围还是有些小,有没有可以扩大搜索范围的模糊一些的搜索?有的,接下来就介绍一下字符组搜索。字符组搜索的形式就是用方括号 [ ] 将搜索的字符括起来,如下表所示:表达式含义例子[abcd]搜索 abcd 中任意一个字符原始字符串:Apples are good to your health.正则表达式:[abcd]搜索结果:参见粗体字[a-f]搜索 a 到 f 中任意一个字符原始字符串:Apples are good to your health.正则表达式:[a-f]搜索结果:参见粗体字[^a-f]搜索任意一个字符,但不包括 a 到 f 中的 阅读全文
posted @ 2013-03-09 14:50 优秀程序缘 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 上一章介绍了一个简单的正则表达式,但是看起来也不怎么样啊,嗯~是的,凡事要循序渐进,下面再来看一个稍微有一点意思的 ---- 转义搜索。转义大家可能都接触过,就是某个字符前面加一个斜杠(\)的那种,比如最常见的 \n(换行符)、\t(制表符)。下面是一些比较常用的转义字符,更多的内容,请参见 MSDN:表达式含义\ 后面跟以下字符中的任意一个. $ ^ { [ ( | ) * + ? \表示该字符本身\t制表符\r回车符\n换行符\nnnASCII 码字符,其中 nnn 是三位八进制数字。 例如,\040 表示空格字符。\xnnASCII 码字符,其中 nn 是两位十六进制数字。\unnnnU 阅读全文
posted @ 2013-03-09 14:49 优秀程序缘 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 书写格式要使用正则表达式,第一步当然是要“写”了,那么怎么写呢?一共有两种格式:"\\d{1,6}-\\d*"@"\d{1,6}-\d*"双引号(")中的部分就是正则表达式了(暂时先不用关心本表达式的含义)。这两种书写格式有什么区别呢?仔细观察的话,我们会发现第一种方式中的 \\d 在第二中方式中写成了 \d,OK,这就是两种书写方式的区别了。在第一种书写方式中,由于斜杠(\)字符在正则表达式中有别的作用,所以直接写的话是不行了,所以要用两个斜杠(\\)来代表一个斜杠(\),这就是传说中的“转义”。但是这样很麻烦,如果一个正则表达式中要用到多个 阅读全文
posted @ 2013-03-09 14:47 优秀程序缘 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 概述你有没有见过类似下面这种代码:\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)天啊,这是什么?!或者,你想检查用户输入的电话号码在格式上是否正确,但是用代码实现起来却非常麻烦?好了,不用苦恼了,以上的情况其实都是正则表达式应用的例子。本文就是要带领大家迈进 .NetFramework 正则表达式的大门,一步一步了解它。本文根据 MSDN 的正则表达式一章总结、提炼而来,有时会将 MSDN 中晦涩难懂的专业词汇换成本人理解的词汇,如果不喜 阅读全文
posted @ 2013-03-09 14:46 优秀程序缘 阅读(95) 评论(0) 推荐(0) 编辑