半小时掌握正则表达式

2018-03-09  本文已影响19人  溪西

正则表达式是一门使用非常广泛的语言,在很多工具及其他编程语言中都有广泛的支持,比如:grep,awk,sed,vi等。它是如此常见,一直与编程人员在很多场合都无可避免的要与之打交道,最近做的几个项目,不可避免的要利用正则表达写一些脚本文件来处理事情,两三个脚本命令就搞定的事情,java要写一大堆文件。由此也看出掌握好正则表达式的好处是非常明显的,好在其语法简单,学起来不算太难。

正则表达式通常也会叫为“模式"(pattern),正则表达式本质上来说是一个字符串模板,用来确认某个字符串是否符合这个模板的格式,任何一个字符串,要么符合这个模板,要么不符合这个模板。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。因为正则表达式也是用字符串表示的,所以,首先了解如何用字符来描述字符。

在正则表达式中,用\d可以匹配一个数字,\w可以匹配一个字母或数字,.可以匹配任意字符,所以:

'00\d'可以匹配'007',但无法匹配'00A';

'\d\d\d'可以匹配'010';

'\w\w\d'可以匹配'py3';

'py.'可以匹配'pyc'、'pyo'、'py!'等等。

要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:

来看一个复杂的例子:\d{3}\s+\d{3,8}。

解读如下:

1、\d{3}表示匹配3个数字,例如'010';

2、\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ',' '等;

3、\d{3,8}表示3-8个数字,例如'1234567'。

所以,这串正则表达式可以匹配以任意个空格隔开的带区号的电话号码。

所以这么看这则表达式是不是比较简单呢!^_^

上一篇 下一篇

猜你喜欢

热点阅读