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

正则表达式

1. 字符组[字符]

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

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

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

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. 贪婪/惰性匹配

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

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

默认为贪婪匹配tab

匹配尽量多的字符字符

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

<script>数字

<script>script

加上'?'以后,匹配尽量少的字符ab

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

 

  最经常使用:

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

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

6. ?的用法

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

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

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

相关文章
相关标签/搜索