现在的位置: 首页 > 当代文学 > 文章
正则表达式的五个成功习惯-php进阶-PHP教程-幽默笑话
2019-07-12 / 来源:本站

正则表达式的五个成功习惯-php进阶-PHP教程-幽默笑话

一、使用空格和注释对于大部分程序员来说,在一个正则表达式环境里使用空格和缩进排列都不成问题,如果他们没有这么做一定会被同行甚至外行人士看笑话。

几乎每个人都知道把代码挤在一行会难于阅读、书写和维护。

对于正则表达式又有什么不同呢?大部分替换表达式工具都具有扩展的空格特性,这允许程序员把他们的正则表达式扩展为多行,并在每一行结尾加上注释。

为什么只有少部分程序员利用这个特性呢?Perl6的正则表达式默认就是扩展空格的模式。

不要再让语言替你默认扩展空格了,自己主动利用吧。

记住扩展空格的窍门之一就是让正则表达式引擎忽略扩展空格。

这样如果你需要匹配空格,你就不得不明确说明。 在Perl语言里面,在正则表达式的结尾加上x,这样“m/foo|bar/”变为如下形式:m/foo|bar/x在PHP语言里面,在正则表达式的结尾加上x,这样“/foo|bar/”变为如下形式:/foo|bar/x在Python语言里面,传递模式修饰参数“”得到编译函数如下:pattern=rfoo|barregex=(pattern,)处理更加复杂的正则表达式时,空格和注释就更能体现出其重要性。

假设下面的正则表达式用于匹配美国的电话号码:(d{3})d{3}[-.]d{4}这个正则表达式匹配电话号码如“(314)555-4000”的形式,你认为这个正则表达式是否匹配“314-555-4000”或者“555-4000”呢?答案是两种都不匹配。 写上这么一行代码隐蔽了缺点和设计结果本身,电话区号是需要的,但是正则表达式在区号和前缀之间缺少一个分隔符号的说明。 把这一行代码分成几行并加上注释将把缺点暴露无疑,修改起来显然更容易一些。 在Perl语言里面应该是如下形式:/(#可选圆括号d{3}#必须的电话区号)#可选圆括号[-s.]#分隔符号可以是破折号、空格或者句点d{3}#三位数前缀[-.]#另一个分隔符号d{4}#四位数电话号码/x改写过的正则表达式现在在电话区号后有一个可选择的分隔符号,这样它应该是匹配“314-555-4000”的,然而电话区号还是必须的。 另一个程序员如果需要把电话区号变为可选项则可以迅速看出它现在不是可选的,一个小小的改动就可以解决这个问题。