整理完会议记录,还有分享的文章需要写。原来我八小时之外也一直有很多事情要做,虽然天气热了后我也没有更多的事情可以做。我不太喜欢写这样的东西,因为所写的这些内容其实没有什么可读性和技术含量,不过还是写一点吧,多少可能有那么一点用。

去除文本首尾空格

这是个常见的问题,但并不是每次都需要你自己去处理的问题。做这件事情的方法基本上也只有一个,那就是用^\s+\s+$这两个正则表达式去匹配和替换。当然你可能见过诸如\s*(.*?)\s*$这样的表达式,但因为大量的回溯,这种方法并不适用。有时候并不见得必须一个任务就只能用一个正则表达式,通常来说,最简单易懂的方法更有效率一些。如果一定要苛求的话,那么可以考虑下这个正则表达式:^\s*((?:.*\S)?)\s*$

匹配HTML Tag

这也是一个比较常遇到的情况,特别是在过去没有那么多Web Service的时候,有些数据也只好去别人那里挖取一下了。最近遇到的一个使用场景是对历史数据的一些处理,需要找出帖子里是否含有图片的情况,实际情况会比仅仅匹配HTML Tag复杂一点,但还是借助了基本的表达式。最直白的方法就是< [^>]+>,这个方法应付一些不太精确的需求已经足够了,但问题也不小。事实上,HTML Tag的属性值中是可以允许存在>字符的,而且还要考虑的问题是HTML的引文可以使用双引号和单引号,只是不允许转义嵌套的引号。稍做修改之后,可以得到一个不错的正则表达式:< ("[^"]*"|'[^']*'|[^'">])*>。对于一些检测HTML Tag相关的需求,都可以将这个正则表达式作为起点。

检查HTTP URL

这个问题其实很复杂,针对各种特定需求的变化也是最多的,做到应对需求的完美并不容易,但大多数时候都可以应付。这里面主要需要考虑的问题一个是匹配主机名,另一方面是在文章中提取时对”.”的判断,甚至是对一些参数的检测和限制。这些问题经常可能需要考虑需求的不同,做一些特殊的变化,具体如何编写这个正则表达式就不说了,比较标准的可以作为基础参照的资料就问Google吧,大部分结果在稍微修改一下之后,基本都能满足需求了。

题外话是这样的,遇到的应用情景是检测特定的几个视频网站的分享代码,并提取flash资源地址进行进一步检测。曾遇到过两个问题,一是土豆的页面URL和资源地址仅相差一个/,这个会需要一点额外的工作来处理。另一方面是经过做这个小需求之后,才发现Youtube和6.cn的分享代码应该是对用户最友好的,显示的位置和提供的方式都很简捷明了。相比其它网站各式各样的设计,特别是什么56.com之类的,如果用户真搞的清楚它提供的那些东西是干什么用,那就奇了。