http://blog.sina.com.cn/csugis[订阅]
个人资料
分类
    内容读取中…
评论
读取中...
访客
读取中...
好友
读取中...
博文

6. 部分例子

正则表达式 说明
/\b([a-z]+) \1\b/gi 一个单词连续出现的位置
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置
/[-a-z]/ A至z共26个字母再加一个-号。
/ter\b/ 可匹配chapter,而不能terminal
/\Bapt/ 可匹配chapter,而不能aptitude

1. 引子

  目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。

  正则表达式的使用,可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。

例子: ^.+@.+\\..+$

  这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。

  注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解。

2. 正则表达式的历史

  正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和

正则表达式(regular expression_r)


关键字: 正则表达式,Regular Expression

作者:笑容

发表于:2004年05月03日
最后更新: 2005年01月17日 19:54
版权声明:使用
创作公用版权协议

引用地址:<a href='http://oo8h.51.net/docs/regular_expression_r.htm'>正则表达式(regular expression_r)</a>

NAV: 笑容的八小时外 / 笑容的八小时外资料索引


前言

正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。

索引

正则表达式之道之三(2006-10-26 21:40)

困难的例子(不可思议的象形文字)

Coming soon.

不同工具中的正则表达式

OK,你已经准备使用RE(regular expression_rs,正则表达式),但是你并准备使用vi。所以,在这里我们给出一些在其他工具中使用RE的例子。另外,我还会总结一下你在不同程序之间使用RE可能发现的区别。

当然,你也可以在Visual C++编辑器中使用RE。选择Edit->Replace,然后选择'Regular expression_r'选择框,Find What输入框对应上面介绍的vi命令:%s/pat1/pat2/g中的pat1部分,而Replace输入框对应pat2部分。但是,为了得到vi的执行范围和g选项,你要使用Replace All或者适当的手工Find Next and Replace(译者按:知道为啥有人骂微软弱智了吧,虽然VC中可以选中一个范围的文本,然后在其中执行替换,但是总之不够vi那么灵活和典雅)。

sed

Sed是Stream EDitor的缩写

正则表达式之道之二(2006-10-26 21:39)

简单的例子

这里有一些有代表性的、比较简单的例子。

vi 命令 作用


:%s/ */ /g 把一个或者多个空格替换为一个空格。
:%s/ *$// 去掉行尾的所有空格。
:%s/^/ / 在每一行头上加入一个空格。
:%s/^[0-9][0-9]* // 去掉行首的所有数字字符。
:%s/b[aeio]g/bug/g 将所有的bag

正则表达式之道

原著:Steve Mansour
sman@scruznet.com
Revised: June 5, 1999
(copied by jm /at/ jmason.org from http://www.scruz.net/%7esman/regexp.htm, after the original disappeared! )

翻译:Neo Lee
neo.lee@gmail.com
2004年10月16日


英文版原文

译者按:原文因为年代久远,文中很多链接早已过期(主要是关于vi、sed等工具的介绍和手册),本译文中已将此类链接删除,如需检查这些链接可以查看上面链接的原文。除此之外基本照原文直译,括号中有“译者按”的部分是译者补充的说明。如有内容方面的问题请直接和Steve Mansor联系,当然,如果你只写中文,也可以和我联系。


目 录

什么是正则表达式
范例
  

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,'aa').length;}

匹配空行的正则表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)

应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:

String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, '');
}

利用正则表达式分解和转换IP地址:

下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:

function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4

天苍苍,野茫茫,今年奖金太渺茫!水弯弯,路长长,没钱的日子太漫长!楼高高,人忙忙,今夜能否与你结伴抢银行……暗号:中秋快乐!

中秋之际,我谨代表党中央、国务院、以及拉登兄和基地全体勇士、布什、普京、布莱尔,向你并通过你向全家人致以最真挚的问候:中秋快乐!

对你的思念是一天又一天,孤单的我还是没有改变,美丽的梦何时才能出现,亲爱的好想再见你一面!可我就是找不到你被关在哪个猪圈!

流星划过天际,我错过了许愿;浪花拍上岩石,我错过了祝福;故事讲了一遍,我错过了聆听;人生只有一回,我庆幸没有错过你这个朋友!祝你中秋快乐!

就知道中秋那天你会被铺天盖地的短信包围,英明的我今天就让祝福跨过高山越过高楼大厦穿过大街小巷,闪过卖茶叶蛋的老太太,钻进你的手机:中秋快乐!

关掉你的手机,慢慢

实力(2006-10-04 10:40)
    实力,实力是在适当的时候适当的地点充分发挥然后取得了成功,不在乎你实力的大小;否则,你就算满腹经纶,才华盖世,也只能是抱怨命运不济,造化弄人而自怨自艾了!