版权声明:本文为神州灵云作者的原创文章,未经神州灵云允许不得转载。
本文作者:Joy
正则表达式广泛应用于文本、字符串搜索和替换,其功能非常强大,能够高效的解决很多繁琐且困难的问题。但它并不完美,其最大的缺点就是看上去很难学,让很多对它感兴趣的人,只看它一眼便决定放弃。事实上,这是对它的误解。
正则表达式的基本语法和特殊符号并不多,特别是经常用到的就更少了。就像是了解了“加减乘除”,解出一个“四则混合运算”的表达式,只是时间问题一样。至于那些高阶用法,数量不多,理解不难,几乎用不到,可以不用理会,就算用到现学也不会花太多时间。
大部分情况下,正则表达式只是“二则混合运算”,而且这两种基本语法都很简单,是不是有点小意外呢。
举个例子:0[0-9]{2,3}-[0-9]{7,8}
看上去略显复杂,但这个正则表达式只包含两种语法。方括号“[]”表示字符多选一,如“[12-4]”表示数字“1、2、3、4”中任意一个,“[Ab-d]”表示字母“A、b、c、d”中任意一个。花括号“{n,m}”表示前一个字符重复至少n次、至多m次。了解了这两种语法,再来看这个例子就容易理解了,这是一个匹配电话号码的正则表达式。区号部分"0"开始"-“结束,中间二或三位数字,其后是七或八位的电话号码。
看到这里,你已经有了扎实的基本功了,你已经可以写出可以应付大部分需求的正则表达式了。什么?别人写的你看不懂?哦,那可能是一些机智(wuliao)的开发者为了书写方便(jiushizhuangbi),搞出来一些所谓的缩写形式。比如上面的例子也可以写成: 0\d{2,3}-\d{7-8},”\d"代表任一数字。类似的缩写还有一些,如下:
- “\d”: 匹配数字
- “\w”: 匹配字母,数字,下划线
- “\s”: 匹配空格
- “.”: 匹配除了换行符以外的任何字符
- “\b”: 不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中"This is Regex"匹配单独的单词 “is” 正则就要写成 “\bis\b”。 \b 不会匹配is 两边的