诚意
诚意如你,当一诚的态度对待

导航

 

1     什么是正则?

匹配字符串内容的一种规则

在线测试工具 http://tool.chinaz.com/regex/

 

正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。

2     正则表达式的作用

 

(1)     从大段的文字中找到符合规则的内容,如把一个文件中所有的手机号找出来。

一般在爬虫、日志分析中用的较多

(2)     判断某个字符串是否完全符合规则如验证注册时输入的手机号是否合法,一般

在前端中网页注册中用的较多

 

3     正则表达式的规则

正则表达式只和字符串打交道

4     字符组

[0-9]

 匹配数字

[a-z] 

匹配小写字母

[A-Z] 

匹配大写字母

[a-zA-Z]

匹配大小写字母

 [a-zA-Z0-9]

 匹配大小写字母+数字

 [a-zA-Z0-9_]

匹配数字字母下滑线

[0-9a-fA-F]

可以匹配数字,大小写形式的a~f,用来验证十六进制字符

 

5     元字符

\w 

匹配数字字母下划线 ,word关键字 [a-zA-Z0-9_]

\W(大写)

匹配非数字字母下划线

 \d 

匹配所有的数字     digit     [0-9]

\D(大写)

匹配所有的非数字

 \s

 匹配所有的空白符  换行符、 制表符 、空格   space  [\n\t  ]

\S(大写)

匹配任意非空字符

\b

表示单词的边界(一个单词结尾的、开头的)

\t

匹配tab制表符

\n

匹配换行符

^

匹配一个字符串的开始

$

匹配一个字符串的结尾

.

表示匹配除了换行符之外的所有字符

a|b

匹配字符a或字符b

()

分组  表示给几个字符加上量词约束的需求的时候,就给这些量词分在一个组

[...]

匹配字符组中的字符

[^...]

匹配除了字符组中字符的所有字符

有一些特殊意义的元字符进入字符组里就会恢复本来的意义:(: .  |  [ ] (    )  )

\A

匹配字符串开始

\Z

匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串

\z

匹配字符串结束

\G

匹配最后匹配完成的位置

 放在字符组中的元字符会现原形(     ) .   |   ?  +  *  -  号在中括号中有特殊意义,需要转义

6     量词

{n}

表示 这个量词之前的字符出现n次

{n,}

表示这个量词之前的字符至少出现n次

{n,m}:

表示这个量词之前的字符出现n-m次

表示匹配量词之前的字符出现0次或1次,表示可有可无

+

表示匹配量词之前的字符出现1次或多次

*

表示匹配量词之前的字符出现0次或多次

 

7     转义符

如果有特殊意义,加上转义,就会去掉特殊意义,如果没有特殊意义,加上转义,就有特殊意义

8     正则表达式的贪婪与惰性

8.1   贪婪性

会在允许的范围内取最长的结果

所谓贪婪性,就是从头到尾匹配所有满足条件的,然后匹配到尾后在回溯会想要匹配的最后一个数,这样看的结果,实际上前面所有的满足条件的都在最后的结果里,这就是贪婪性

 

8.2   惰性

非贪婪模式/惰性匹配:在量词的后面加上?

例子:

.*?x   匹配任意非换行符字符任意长度 直到遇到x就停止

 

可以参考:http://www.cnblogs.com/Eva-J/articles/7228075.html的正则部分

 

posted on 2018-08-16 17:11  诚意  阅读(134)  评论(0)    收藏  举报