正则表达式

Posted white-black

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

作用:

   表达对字符串数据的 匹配 过滤 提取的表达式(字符串)

概念:

   用事先定义好的特定字符,或这些特定字符的组合,来对字符串进行匹配筛选  

特点:

   通用性很强,适用于很多编程语言

   语法功能强大

re模块:

   是操作正则表达式的模块

技术分享图片
# 导入re模块
    import re

    # 使用match方法进行匹配操作
    result = re.match(正则表达式,要匹配的字符串)

    # 如果上一步匹配到数据的话,可以使用group方法来提取数据
    result.group()
用法
技术分享图片
import re

# 正则表达式前面全部都加上r 没毛病
result = re.match(r"itcast", "itcast.cn")

result.group()
print(result.group())

输出:itcast
示例

匹配单个字符

   .  匹配任意一个字符 除了   可以通过r.S模式让 . 匹配  .==数据.

re.match(r"python.org", "python
org", re.S).group()

   [] 匹配[]中列举的字符   [-]表示范围  [0-9]  , [^0-9]表示取反

   d 匹配数字 即0-9

   D 匹配非数字 即不是数字

   s 匹配空白 即 空格、tab键等等

   S 匹配非空白

   w 匹配非特殊字符 即 a-z 、A-Z、 0-9、 _、汉字 python3中可以匹配汉字

re.match(r"python.orgw", "python.org?").group() # py3默认为unicode模式 可以匹配i汉字

   W 匹配特殊字符  即非字母、非数字、非汉字

技术分享图片
#coding=utf-8

import re

ret = re.match(".","M")
print(ret.group())

ret = re.match("t.o","too")
print(ret.group())

ret = re.match("t.o","two")
print(ret.group())
运行结果:

M
too
two
示例 .

匹配开头和结尾

   ^匹配字符串开头

   $匹配字符串结尾

   [^指定字符]: 表示除了指定字符都匹配

量词

   {m,n} 匹配 至少m次 至多n次   {1,} {0,}

   {m} 匹配 m次

   * 匹配任意次

   + 匹配至少一次

   ? 匹配0或者1次

匹配分组

   目的:提取部分数据

   匿名分组

     创建 (正则)

     获取.group(分组编号)

       0分组存储整体结果

       用户分组从1开始    

     引用 编号

   命名分组

     创建(?P<分组名>正则)

     获取.group(分组名称)

     引用(?P=name)

   | (a|b|c) 匹配|左右任意一个表达式

函数

   match(正则,数据)->匹配对象 从头开始匹配

   search(正则,数据)->匹配对象 从头开始搜索 直到数据搜索完成

   findall (正则,数据)->列表 查找所有与正则表达式匹配的数据 以列表形式输出

   sub (正则,替换数据,数据,次数)->替换后的数据

   split (正则,数据)->切割后的列表

贪婪与懒惰(非贪婪)

   默认贪婪 尽可能多

   前提 满足整体的匹配结果

r字符 

   自动对数据的进行转义

   不添加r时  

技术分享图片
html = """   """
import re
print(re.findall(r"https://.+?.(?:jpg|png)", html))
*==*

 

以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式