正则表达式——字符串匹配

正则表达式

1. 字符组[字符]

  在同一位置可能出现的各种字符组成了一个字符组

  ex:[0-9]——表示0-9中任意一个数字

    [a-f]——表示a-f之间任意一个字母

2. 元字符

\w 匹配字母或数字或下划线
\W 匹配除字母或数字或下划线以外的字符
\d 匹配数字
\D 匹配非数字
\s 匹配任意的空白字符
\S 匹配非空白字符
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结束
. 匹配除换行符之外的任意字符
() 分组——对多个字符组整体做量词约束的时候用到
a|b 匹配字符a或b。从左到右匹配,匹配上就不继续匹配了(应该把长字符串放左边)
[...] 匹配字符组中的任意字符
[^...] 除了字符组内其他都匹配

 

3. 量词

* 重复零次或更多次次
+ 重复一次或更多次
重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次


4. 转义

正则 待匹配字符 匹配结果 说明
\d \d False 正则表达式中的元字符\d表示数字
\\d \d True \转义之后变为\\
"\\\\d" "\\d" True python里面,字符串中'\'需转义。每一个'\'都需要转义一次

r'\\d'

r'\d' True r + 字符串,让整个字符串不转义

5. 贪婪/惰性匹配

  量词后加上 ‘?’ —— 贪婪匹配

正则 待匹配字符 匹配结果 说明
<.*> <script>...<script> <script>...<script>

默认为贪婪匹配

匹配尽可能多的字符

<.*?> <script>...<script>

<script>

<script>

加上'?'之后,匹配尽可能少的字符

将贪婪匹配转为非贪婪匹配(惰性匹配)

 

  最常用:

      .*?  ——  匹配尽量少的任意字符

       .*?abc —— 一直匹配,遇到abc就停止

6. ?的用法

  (1)?—— 表示量词,重复零次或一次

  (2)量词+?—— 尽可能少的匹配

  (3)?:+分组—— 取消分组优先

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

posted @ 2018-10-07 20:39  xc_718  阅读(353)  评论(0编辑  收藏  举报