博文

一个普通IT人的十年回顾--下(2008-04-21 19:45:00)

摘要:     一个普通IT人的十年回顾     下篇
实践人生   下篇 曲折的实践之路 1.希特勒地堡与CIH病毒        99年4月,我来到北京参加研究生复试。复试完了之后就不回去了,我拿着一张光盘,里面刻着我用VB和Authorware3.5编的一个Cool 3D的教学软件,到处参加招聘会,开始了在北京的打工生涯。        说句实话,我心中真是一点底也没有。北京人才济济,我一个三流大学的毕业生,又不是计算机专业的,有人要我吗?        我在北京无依无靠,没有任何一个亲戚在北京,住成了大问题。北京这地方,钱太不经花,生活费用太高,我四处寻找便宜的地方住。后来,我在北京中医药大学对面的招待所中租了个床位,每晚20元,地下室。这个招待所的地下室非常大,每天回去的时候,都要走过长长的曲曲折折的通道,加上那昏黄的灯泡,每次我都有走进了希特勒地堡的感觉。地下室里潮湿阴暗,不见天日。地下室里人员很杂,什么人都有,永远没有一种安全的感觉,所幸的是我也是个穷光蛋,光脚的还怕穿鞋的?别人能呆我也能呆,唯一让我担心的是钱,没钱,在北京连流落街头都不够格,立马被收容去昌平筛沙。呵呵,我没这种经历,这是当时住一块的一个外地要考北京中医药大学的博士生说的(我俩居然住到了一个屋里,大家都没钱,只能挤地下室,只是他老兄晚上打呼,我可真受了不少罪)。        日子一天天过去,袋里的钱一天天少了,但工作还是没着落,心中越来越慌,除去学费,来京时父母给我2000元,大哥资助我的1000元就是我当时的全部资金(3000元在北京能呆多久?!)。我当时订了个计划,留下500元保底,打死都不能动,要靠它作路费回家的。我当时说,一定得找到一家公司,再少的钱都干,只要有口饭吃,有张床让我睡我就满足了。        我一共......

阅读全文(1569) | 评论:0

一个普通IT人的十年回顾--中(2008-04-21 19:44:00)

摘要:     一个普通IT人的 十年回顾         中篇
艰难人生          在上篇中我说到决定考研,从此迈上了一条对我来说到目前为止最难走的路,是一个人生的炼狱。 第一次考研的失败        决定考研之后,我就去买了相关资料,取出尘封己久差点当废纸卖掉的大学课本,又开始了学生生涯。        考哪儿的大学?是我首先要考虑的问题。 当时还有另一个高中同学也准备考研,也是计算机,他报了广西师范大学的研究生。 父母则劝我也考广西师大或我的母校广西大学的研究生,说那好考得多,也可以托人走走关系。但我这人很犟,我在西大混了4年,什么也没学到,我还去那儿干什么?我想起了高中时的梦想,决定直接考北京的高校。当然,北大清华是想都不敢想的,社会上工作几年,我毕竟清楚自己几斤几两,但北京几十所高校,难道一所也不行?我不能再听父母的话了,我要走自己的路,自己的命运自己负责,于是我坚持要考北京的学校。 知道这件事的朋友都对我表示惊奇,工作了4年,学校里的知识都忘得差不多了,还想直接考北京的学校,难度之大,相信不少人都认为我成功的希望很渺茫。事实证明,他们的看法是对的,但不全对,因为世上本就没有绝对的事情。        这时,我还在一家私营公司里打工,于是,白天上班,晚上就挑灯夜战,每晚不到12点不休息。 经过半年的复习,我参加了1997年元月的全国研究生入学考试,成绩出来,我专业课没问题,但数学才得了44分,毫无疑问,名落孙山。 这是一个打击,但对我并没有太大的影响。 这时,我小时住在隔壁的阿姨来到桂林,她说她女儿(我小时的玩伴,也姓杨)去年就考研了,但也同样没过,她原先在北京服装学院读本科,毕业分回广西柳州一个国企里,工作一年之后考研,没考上之后,她就把工作给辞了,专门跑到北京同学家中复习一年。97年考研她成功了。 得知这......

阅读全文(1975) | 评论:0

强烈号召,希望大家支持(2008-04-20 21:24:00)

摘要:最近,国外反华势力运作活动猖獗。 这些反华势力,过去曾经对我民族、对我国土有着令人痛心之践踏,今天,也绝不会有什么好意,将来,一定会继续行过去之强盗行径,为今日之无耻诬陷伤害之能事。 所以,我号召大家: 凡中国企业,务必提高产品及服务质量,尤其如汽车、手机等,振兴民族产业之基本也。 凡中国公民,尽量购买本国产品,支持民族产业之必须也。......

阅读全文(1802) | 评论:0

正则表达式举例(2008-04-20 18:12:00)

摘要:Grabbing HTML Tags分析HTML标记 <TAG\b[^>]*>(.*?)</TAG> matches the opening and closing pair of a specific HTML tag. Anything between the tags is captured into the first backreference. The question mark in the regex makes the star lazy, to make sure it stops before the first closing tag rather than before the last, like a greedy star would do. This regex will not properly match tags nested inside themselves, like in <TAG>one<TAG>two</TAG>one</TAG>. <([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1> will match the opening and closing pair of any HTML tag. Be sure to turn off case sensitivity. The key in this solution is the use of the backreference \1 in the regex. Anything between the tags is captured into the second backreference. This solution will also not match tags nested in themselves. Trimming Whitespace去除空白 You can easily trim unnecessary whitespace from the start and the end of a string or the lines in a text file by doing a regex search......

阅读全文(1965) | 评论:0

与化学相关的正则表达式(2008-04-20 17:47:00)

摘要:EINECS号:EINECS = re.compile(r'^\d\d\d-\d\d\d-\d$')
CAS = re.compile(r'^\d*-\d\d-\d$')
分子式:FORMULA = re.compile(r'([A-Z][A-Za-z0-9]+\.?[A-Za-z0-9]+/?[A-Za-z0-9]+)')
CAS号最后验证码的计算方法: For example, the CAS number of water is 7732-18-5: the checksum is calculated as (8×1 + 1×2 + 2×3 + 3×4 + 7×5 + 7×6) = 105; 105 mod 10 = 5. Chemical Elements symbols Expression ^((?-i)A[cglmrstu]|B[aehikr]?|C[adeflmorsu]?|D[bsy]|E[rsu]|F[emf]?|G[ade]|H[efgos]?|I[nk]?|Kr?|L[airu]|M[dgnot]|N[abdeiop]|Os?|P[abdmortu]?|R[abefghnu]|S[bcegimnr]?|T[abcehil]|U(u[bhopqst])?|V|W|Xe|Yb?|Z[nr])$ Description Chemical elements of the periodic table from 1 to 118. Matches Hg Non-Matches HE Author Rating: Not yet rated. Guy Bruneau

  Title Test Details CAS Number Expression \b[1-9]{1}[0-9]{1,5}-\d{2}-\d\b Description This is a more robust regex for matching Chemical Abstract Service (CAS) Numbers. This distinguishes between CAS numbers and othe......

阅读全文(2382) | 评论:0

常用正则表达式(2008-04-20 17:04:00)

摘要:匹配中文字符的正则表达式: [\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*1
}
else
{
throw new Error("Not a valid IP address!")
}
}

不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]......

阅读全文(3476) | 评论:0

Java正则表达式详解(2008-04-20 16:54:00)

摘要: Java正则表达式详解 2005-10-08 10:01 作者: 仙人掌工作室 出处: KissJava.com 责任编辑:王玉涵
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。 许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。 然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从Apache.org下载源代码开放的Jakarta-ORO库。本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。 一、正则表达式基础知识 我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是说: 1.1 句点符号 假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。要构造出这个正则表达式,你可以使用一个通配符——句点符号“.”。这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符: 1.2 方括号符号 为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定......

阅读全文(2168) | 评论:0

揭开正则表达式的神秘面纱(2008-04-20 16:47:00)

摘要: 揭开正则表达式的神秘面纱 关闭高亮 [原创文章,转载请保留或注明出处:http://www.regexlab.com/zh/regref.htm] 引言     正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。

    正则表达式可以用来:(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。(3)用来替换,比普通的替换更强大。

   正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难;另一方面,各种引擎自带的文档一般都要介绍它特有的功能,然而这部分特有的功能并不是我们首先要理解的。

    文章中的每一个举例,都可以点击进入到测试页面进行测试。闲话少说,开始。 [ 点击下载 chm 版本] - DEELX 正则语法,包含其他高级语法的 chm 版本。 (注意:下载的 chm 版本适合用来查阅,而本文适合用来学习,建议继续阅读。) 1. 正则表达式规则 1.1 普通字符     字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。

    举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)

    举例2:表达式 "bcd",在匹......

阅读全文(1303) | 评论:0

深入浅出之正则表达式(二)(2008-04-20 16:45:00)

摘要:深入浅出之正则表达式(二) 前言:
       本文是前一片文章《深入浅出之正则表达式(一)》的续篇,在本文中讲述了正则表达式中的组与向后引用,先前向后查看,条件测试,单词边界,选择符等表达式及例子,并分析了正则引擎在执行匹配时的内部机理。
       本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载。但是为了尊重原作者和译者的劳动,请注明出处!谢谢!  
9.      单词边界   元字符<<\b>>也是一种对位置进行匹配的“锚”。这种匹配是0长度匹配。 有4种位置被认为是“单词边界”: 1)        在字符串的第一个字符前的位置(如果字符串的第一个字符是一个“单词字符”) 2)        在字符串的最后一个字符后的位置(如果字符串的最后一个字符是一个“单词字符”) 3)        在一个“单词字符”和“非单词字符”之间,其中“非单词字符”紧跟在“单词字符”之后 4)        在一个“非单词字符”和“单词字符”之间,其中“单词字符”紧跟在“非单词字符”后面  “单词字符”是可以用“\w”匹配的字符,“非单词字符”是可以用“\W”匹配的字符。在大多数的正则表达式实现中,“单词字符”通常包括<<[a-zA-Z0-9_]>>。 例如:<<\b4\b>>能够匹配单个的4而不是一个更大数的一部分。这个正则表达式不会匹配“44”中的4。 换种说法,几乎可以说<<\b>>匹配一个“字母数字序列”的开始和结束的位置。   “单词边界”的取反集为<<\B&......

阅读全文(1297) | 评论:0

深入浅出之正则表达式(一)(2008-04-20 16:44:00)

摘要:深入浅出之正则表达式(一)

前言:
       半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程。于是一直想把他翻译过来。这个愿望直到这个五一长假才得以实现,结果就有了这篇文章。关于本文的名字,使用“深入浅出”似乎已经太俗。但是通读原文以后,觉得只有用“深入浅出”才能准确的表达出该教程给我的感受,所以也就不能免俗了。
       本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载。但是为了尊重原作者和译者的劳动,请注明出处!谢谢!   1.      什么是正则表达式 基本说来,正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express。本文将用<<regex>>来表示一段具体的正则表达式。 一段文本就是最基本的模式,简单的匹配相同的文本。   2.      不同的正则表达式引擎 正则表达式引擎是一种可以处理正则表达式的软件。通常,引擎是更大的应用程序的一部分。在软件世界,不同的正则表达式并不互相兼容。本教程会集中讨论Perl 5 类型的引擎,因为这种引擎是应用最广泛的引擎。同时我们也会提到一些和其他引擎的区别。许多近代的引擎都很类似,但不完全一样。例如.NET正则库,JDK正则包。   3.      文字符号 最基本的正则表达式由单个文字符号组成。如<<a>>,它将匹配字符串中第一次出现的字符“a”。如对字符串“Jack is a boy”。“J”后的“a”将被匹配。而第二个“a”将不会被匹配。 正则表达式也可以匹配第二个“a”,这必须是你告诉正则表达式引擎从第一次匹配的地方开始搜索。在文本编辑器中,你可以使用“查找下一个”。在编程语言中,会有一个......

阅读全文(1531) | 评论:0