正则表达式


正则表达式是一种描述字符排列方式的一种语法规则,在程序开发中经常用于字符串地操作。如果你需要编写一个爬虫程序,对正则表达式的了解是非常有必要的。既然正则表达式是一种语法,自然有其编写语法,现在就让我们开始了解吧。

正则表达式主要由一下四个部分构成:

一.定界符

二.原子

三.元子符

四.模式修正符

一.定界符
定界符用来标记正则表达式的范围,除了数字,字母和反斜杠(\)外其他字符都可以当作定界符。当然了,除了特殊请客,一般使用”\/\/“。一下为一个标准正则表达式的书写方式:
“/原子和元字符/模式修正符”
二.原子
原子是正则表达式最基本的单元,而且一个正则表达式必须包含至少一个原子。原子有一下几种类型:
2.1 所有打印和非打印的字符
其中打印字符指通过键盘可以显示到屏幕上的字符;非打印指空格,换行,制表等字符。
2.2 *,.,+,\?,\<,>,(,)等有特殊意义的字符若要当作原子则应在其前面加上转义字符\。
2.3 其它代表范围的原子
\d: 表示任意一个十进制的数字
\D: 表示任意一个除数字之外的字符
\s: 表示任意一个空白字符(空格,回车,换行等)
\S: 表示任意一个非空白字符
\w: 表示任意一个字(a->z,A->Z,下划线)
\W: 表示任意一个非字
2.4 自定义一个原子表通过使用”[]”,表示可匹配括号中的任意一个原子
比如:
/[1245]/ 表示匹配1,2,4,5
/[a-z]/ 表示匹配a到z的任意字母
在[]中的第一个字符前面添加”\^”表示非,比如
\d 等于 [0-9]
\D 等于 [^0-9]
\s 等于 [\n\r\t\f]
\S 等于 [^\n\r\t\f]
\w 等于 [a-zA-Z_]
\W 等于 [^a-zA-Z_]
元字符
元字符是一种特殊的字符,用于修饰原子,不能单独使用。有常见一下元字符:
* 表示其前面的原子可以出现0次,1次或多次
+ 表示其前面的原子可以出现1次或多次
\? 表示其前面的原子可以出现1次或0次
. 表示除换行符之外的任意字符
{} 用于自己定义其前面原子的出现次数。比如:
{m} /89{6}8/ 表示9要出现6次
{m,n} 表示至少出现m次,至多出现n次
{m,} 表示至少出现m次
{,n} 表示至多出现n次
^ 在正则表达式的第一个字符之前出现,表示以该字符开头。比如 /\^one/ 表示以one开头。
$ 在正则表达式的最后一个字符之后出现,表示一该字符结束。 比如 /one\$/ 表示以one结尾
| 表示或的关系,比如/one|two/表示one与two的关系
\b 表示一个边界,比如:/\bis\b/可以匹配”this is island”中的”is”
\B 表示非边界,比如:/\Bis\b/可以匹配”this is island”中的”this”
() 可以作为大原子使用;改变优先级;作为子模式使用等
模式修正符
模式修正符用来对一边写完成的表达式进行功能完善或扩展,使用方式为如下
“/原子与元子符/模式修正符”
有一下常用的模式修正符
i 表示不区分大小写、
m 默认情况下视为一行,添加该修正符可以识别换行
s 将多行视为单行
x 表示空白可以忽略不计
A 表示必须以什么开头
Z 表示必须以什么结尾
U 可以阻止正则表达式的贪婪模式