假设要查找文章中Elvis后接有alive的文字符串的话,使用正则(RE)可能会经过下列的过程,括号是所下RE的意思:
1. elvis (查找elvis)
上述代表所要查找的字符顺序为elvis。在.NET中可以设定乎略字符的大小写,所以”Elvis”、”ELVIS”或者是”eLvIs”都是符合1所下的RE。但因为这只管字符出现的顺序为elvis,所以pelvis也是符合1所下的RE。可以用2的RE来改进。
2. \belvis\b (将elvis视为一整体的字查找,如elvis、Elvis乎略字符大小写时)
“\b”在RE中有特别的意思,在上述的例子中所指的就是字的边界,所以\belvis\b用\b把elvis的前后边界界定出来,也就是要elvis这个字。
假设要将同一行里elvis后接有alive的文字符串找出来,此时就会用到另外二个特别意义的字符”.”及”*”。”.”所代表就是除了换行字符的任意字符,而”*”所代表的是重复*之前项目直到找到符合RE的字符串。所以”.*”所指的就是除了换行字符外的任意数目的字符数。所以查找同一行里elvis后接有alive的文字符串找出来,则可下如3之RE。
3. \belvis\b.*\balive\b (查找elvis后面接有alive的文字符串,如elvis is alive)
用简单之特别字符就可以组成功能强大的RE,但也发现当使用越来越多的特别字符时,RE就会越来越难看得懂了。
再看看另外的例子
组成有效的电话号码
假使要从网页上收集顾客格式为xxx-xxxx的7位数字的电话号码,其中x是数字,RE可能会这样写。
4. \b\d\d\d-\d\d\d\d (查找七位数字之电话号码,如123-1234)
每一个\d代表一个数字。”-”则是一般的连字符号,为避免太多重复的\d,RE可以改写成如5的方式。
5. \b\d{3}-\d{4} (查找七位数字电话号码较好的方法,如123-1234)
在\d后的{3},代表重复前一个项目三次,也就是相等于\d\d\d。
RE的学习及测试工具 Expresso
因为RE不易阅读及使用者容易会下错RE的特性,Jim大大开发了一个工具软件Expresso,用来帮助使用者学习及测试RE,除了上面所述的网址之外,也可以上Ultrapico网站(http://www.Ultrapico.com)。安装完Expresso后,在Expression Library中,Jim大大把文章的例子都建立在其中,可以边看文章边测试,也可以试着修改范例所下的RE,马上可以看到结果,小弟觉得非常好用。各位大大可以试试。
正则表达式高级技巧
原创文章如转载,请注明:转载自悠悠博客 [ http://www.ajaxstu.com/ ]
相关文章:
- 用正则轻松实现货币的千分位显示(2007-9-27 11:34:11)
- 5do8的几个正则(2007-8-10 4:47:45)
- 抓取html中的内容(2007-7-15 7:54:15)
- SQL Server中使用正则表达式(2007-7-15 4:29:41)
- 正则表达式结合数组提取文章中的文件名(2007-5-14 6:29:52)
- 用正则提升字符串处理速度(2007-5-9 2:0:52)
- 正则对象中Exec(ute)方法的应用举例(2007-5-6 10:24:53)
- 正则表达式的作用(2007-4-21 5:2:37)
- 正则表达式:选择与编组(2007-4-2 11:9:19)
- 正则表达式在网页处理中的应用四则(2007-4-1 4:1:51)
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
