re模块与正则

 

一.正则

正则就是用来筛选字符串中的特定的内容

正则表达式与re模块的关系:

  1.正则表达式是一门独立的技术,任何语言都可以使用

  2.python中药想使用正则表达式需要通过调用re模块

正则应用场景:

  1.爬虫

  2.数据分析

正则字符:

元字符 匹配内容
. 除 换行符 以外的任意字符
\n 换行符
\w 字母 或 数字 或 下划线
\s 任意的空白字符
\d 数字
\W 非 字母 或 数字 或下划线
\S 非 空白字符
\D 非 数字
\t 制表符
^ 字符串的开始
$ 字符串的结尾
\b 单词的结尾
a|b 字符 a 或 b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配出了字符中的所有字符

 

 

 

 

 

 

 

 

量词 说明
* 重复 零次 或 多次
+ 重复 一次 或 多次
? 重复 零次 或 一次
{n} 重复 n 次                                                                                  
{n,} 重复 n 次 或 多次
{n,m} 重复 n 到 m 次

字符组概念

在同一位置可能出现各种字符 组成了一个字符组,在正则表达式中用[ ]表示,一个字符组内每次只能匹配一个字符,[ ]内的字符是或的关系

例:

  • 匹配0-9数字 : [0123456789] 或 [1-9] 
  • 匹配A-Z字母 : 同上
  • 匹配a-z字母 : 同上

  ps: 字符组内范围必须从小到大必须按ASCII码表排序

  • ^:以什么开头

    •   ^[1-9] : 匹配字符是否以1-9其中的数字为开头
  • $:以什么结尾
    •   [a-z]$ : 匹配的字符是否以a-z其中的字母结尾
  • ^...$:精准匹配固定长度的目标字符
    •   ^waller$ : 匹配waller
  •  | :或

    •   ab|abc 优先匹配 | 前面的内容,若前面内容匹配上 | 后面的内容不再匹配(在书写时把长的写在 | 前面)

      

  •  [^...] : 除括号内的内容其他都匹配
    •  

量词 只能和元字符配合使用,并且是贪婪匹配

  • + :  匹配1次或多次

    •   匹配 13555555555 ,用 \d 每次只能匹配单个数字,要想把数字一次都匹配上要用 \d+ 
    • 匹配到 1 条结果
  •  * : 匹配零次或多次
    •   匹配到 2 条结果
  •  {n} : 指明重复个数

 题:

  • 轨道 通道 地道 魔道 人道 
  • 逐个匹配出后面的道:
    •    
  • 取出词:
    • [^\s]{2} : 去掉空格,每次取两个字符   
    • .道 : 取出 .和道组成的词
    • [^\s]. :  [^\s]本身占了一个位置 加 . 共取两个位置
    •  
       
  •  匹配人名: 海燕海娇海东
    •   
      海. 取 海和.组成的词 海燕海娇海东   匹配所有"海."的字符
      ^海. 只取以 海和.为开头 海燕 只从开头匹配"海."
        海.$  只取以 海和.为结尾 海东 只匹配结尾的"海.$"
正则 待匹配字符 匹配
结果
说明
李.? 李杰和李莲英和李二棍子

李杰
李莲
李二

 
?表示重复零次或一次,即只匹配"李"后面一个任意字符
 
李.* 李杰和李莲英和李二棍子 李杰和李莲英和李二棍子
*表示重复零次或多次,即匹配"李"后面0或多个任意字符
李.+ 李杰和李莲英和李二棍子 李杰和李莲英和李二棍子
+表示重复一次或多次,即只匹配"李"后面1个或多个任意字符
李.{1,2} 李杰和李莲英和李二棍子

李杰和
李莲英
李二棍

{1,2}匹配1到2次任意字符

猜你喜欢

转载自www.cnblogs.com/waller/p/11203007.html
今日推荐