zoukankan      html  css  js  c++  java
  • 【Python3 爬虫】07_正则表达式(原子)

    原子是正则表达式的最基本的组成单位,而且在每个模式中最少包含一个原子。原子是由所有那些未显示指定为元字符的打印和非打印字符组成。

    原子分类

    1.普通字符作为原子

    普通字符是编写正则表达式时最常见的原子了,包括所有的大写和小写字母字符、所有数字等。例如,a——z、A——Z、0——9。

    #-*- codingn:utf-8 -*-
    
    import re
    
    pattern = 'lo'
    
    String = "I love you"
    #re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
    Result = re.search(pattern,String)
    
    print("普通字符作为原子的结果:%s"%Result)

    运行结果

    image

    2.一些特殊字符和元字符作为原子

    任何一个符号都可以作为原子使用,但如果这个符号在正则表达式中有一些特殊意义,我们就必须使用转义字符“”取消它的特殊意义,将其变成一个普通的原子。例如,所有标点符号以及一些其他符号,双引号“””、单引号“’”、“*”、“+”、“.”等,如果当原子就必须像”、’、+和.这样使用。

    #-*- codingn:utf-8 -*-
    
    import re
    #需要转义
    pattern = '+'
    
    String = "a+b=c"
    #re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
    Result = re.search(pattern,String)
    
    print("特殊字符作为原子的结果:%s"%Result)

    运行结果

    image

    3.一些非打印字符作为原子

    所谓的非打印字符,是一些在字符串中的格式控制符号,例如: 回车及 制表符号等。例如下表所示列出了正则表达式中常用的非打印字符及其含义。

    #-*- codingn:utf-8 -*-
    
    import re
    
    pattern = '
    '
    
    String = """zhang
    san"""
    #re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
    Result = re.search(pattern,String)
    
    print("非打印字符作为原子的结果:%s"%Result)

    image

    4.使用“通用字符类型”作为原子

    前面介绍的不管是打印字符还是非打印字符作为原子,都是一个原子只能匹配一个字符。而有时我们需要一个原子可以匹配一类字符,例如,匹配所有数字不是一个数字,匹配所有字母而不是一个字母,这时就要使用“通用字符类型”了。

    字母 意义
    /w 匹配任意一个字母、数字或者下划线
    /W 匹配除字母、数字和下划线意外的任意一个字符
    /d 匹配仍以一个十进制数
    /D 匹配除十进制数意外的任意一个其他字符
    /S 匹配除空白字符意外的任意一个其他字符
    /s 匹配任意一个空白字符
    #-*- codingn:utf-8 -*-
    
    import re
    
    pattern ='whow'
    
    String = "wo shi who23"
    #re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
    Result = re.search(pattern,String)
    
    print("通配符作为原子的结果:%s"%Result)

    运行结果:

    image

    5.原子表

    代表某一类的原子太多了,系统不能全都给提供出来,例如数字中的奇数(1、3、5、7、9、)、字母中的元音字母(a、e、i、o、u)等。所以就需要我们可以自己定义出特定的“类原子”,使用原子表“[]”就可以定义一组彼此地位平等的原子,且从原子表中仅选择一个原子进行匹配

    在Python中,原子表由[]表示,比如[xyz],就是一个原子表,这个原子表中定义了3个原子,这3个原子的地位平等。

    #-*- codingn:utf-8 -*-
    
    import re
    
    pattern1 ='wf[gj]w'
    pattern2 ='wf[^gj]w'
    pattern3 ='wf[gj]W'
    
    String = "abcdefgjikdlfk"
    #re.search()函数对整个字符串搜索,并返回第一个匹配字符串的match对象
    Result1 = re.search(pattern1,String)
    Result2 = re.search(pattern2,String)
    Result3 = re.search(pattern3,String)
    
    
    print("pattern1:%s"%Result1)
    print("pattern2:%s"%Result2)
    print("pattern3:%s"%Result3)

    运行结果:

    image

  • 相关阅读:
    python 29day--异常处理及socket简介
    python 28day--类的总结
    python 27day--类的内置函数补充
    python 26day-- 面向对象的三大特性
    python 25day--面对对象进阶
    python 24day--python面向对象编程
    python 23day--python模块的应用
    python 22day--python的模块与包
    python 21day--文件的增删改查功能实现
    虚拟机的三种模式
  • 原文地址:https://www.cnblogs.com/OliverQin/p/8656955.html
Copyright © 2011-2022 走看看