zoukankan      html  css  js  c++  java
  • 《零基础入门学习Python》学习过程笔记【57正则表达式】

    1什么是正则表达式?

    正则表达式本身就是描述规则的工具,用于指定字符串的查找


    2正则表达式使用什么模块? re

    即 import re


    3.re.search((r"b","a")的作用? 在字符串a中查找字符串b(也称正则表达式)第一次出现的位置

    re.search(r"b","a") 注意不要漏写r

    >>> import re
    >>> re.search(r"cde","abcdef")
    <_sre.SRE_Match object; span=(2, 5), match='cde'>  #左闭右开,且索引从0开始
    #如果找不到的话会返回None(就是啥也不返回)


    4.正则表达式中的点(.)有什么作用?通配符(可以代替换行符之外的任意一个字符)

    <_sre.SRE_Match object; span=(0, 1), match='a'>  #匹配一个任意字符,左闭右开
    >>> re.search("..","abcdef")
    <_sre.SRE_Match object; span=(0, 2), match='ab'>  #匹配任意两个任意字符,左闭右开


    >>> re.search("bcd.","abcdef") #查找bcd. 点代表任意字符
    <_sre.SRE_Match object; span=(1, 5), match='bcde'> 找到bcde ,返回左闭右开的字符串所在范围


    5.如何在正则表达式中做到去查找点(.)号本身?(因为在正则表达式中.表示通配符 ) .

    >>> re.search(r".","www.baidu.com")
    <_sre.SRE_Match object; span=(3, 4), match='.'>


    6.如何匹配一位数字? d

    d表示匹配任何一位数字   d的范围?[0,9]

    >>> re.search(r"d","abcd1234")
    <_sre.SRE_Match object; span=(4, 5), match='1'>   #匹配数字1
    >>> re.search(r"ddd","abcd1234")
    <_sre.SRE_Match object; span=(4, 7), match='123'>  #匹配数字123 

    7如何机智的写出查找ip地址的代码?

    不机智的写法:

    >>> re.search(r"ddd.ddd.ddd.ddd","192.168.254.123")
    <_sre.SRE_Match object; span=(0, 15), match='192.168.254.123'>

    不机智的原因:1IP地址7由四组数字组成,每组数字的范围是【0.255】。上面这种写法把每组数字都视为3位数

    2dd\d可以表示【000,999】范围内的数字,超过255的都不是我们需要的结果


    机智的写法:

    为了表示字符串的范围,我们可以创建一个字符类

    如何创建字符类? 用[]

    字符类的含义?只要匹配字符类中的任何一个字符,那么都叫做匹配

    >>> re.search(r"[def]","abcdef")
    <_sre.SRE_Match object; span=(3, 4), match='d'>  #匹配了d

    在字符类中用-表示范围 [a-z]表示所有的英文字母中的一个

    >>> re.search(r"[a-z]","bcde")
    <_sre.SRE_Match object; span=(0, 1), match='b'>  #找到了a


    如何设置某个字符重复的次数?{}

    ab{3} 表示abbb

    >>> re.search(r"ab{3}c","abbbcc")
    <_sre.SRE_Match object; span=(0, 5), match='abbbc'>

    如何设置某个字符重复的次数的范围?

    >>> re.search(r"ab{1,10}","abbbbbb")      #ab,abb,abbb,abbbb,abbbbb……只要在第二个参数中存在就会被匹配
    
    <_sre.SRE_Match object; span=(0, 7), match='abbbbbb'>


    注:字符类"[0-255]"表示 "[0125]"因为"[]"中只表示其中的一个字符

    在字符串中1-9都是字符,10就是两个字符


    如何用整则表达式表示[0,255]范围内的数字?

    d|[1-9]d|1dd|2[0-4]d|25[0-5])
    
    

    
    

    |表示或

    d表示 【0,9】

    [1-9]d 表示【10,19】【20,29】【30,39】【40,49】【50,59】【60,69】【70,79】【80,89】【90,99】

    1dd 表示【100,199】

    2[0-4]d 表示【200,209】【210,219】【220,229】【230,239】【240,249】

    25[0-5] 表示【250,259】

    查找ip地址:

    >>> re.search(r"((d|[1-9]d|1dd|2[0-4]d|25[0-5]).){3}d|[1-9]d|1dd|2[0-4]d|25[0-5]","192.168.1.1")
    <_sre.SRE_Match object; span=(0, 11), match='192.168.1.1'>

    注意:小括号表示分组




















  • 相关阅读:
    PHP中关于字符串的连接
    好用的FireFox(FF)插件
    Scripted Operation
    Scripted device
    chgrp chown
    wait_for_devices
    mysql create user
    mysql
    create user mysql
    Inserting/Removing shutters and filters
  • 原文地址:https://www.cnblogs.com/iamjuruo/p/7470873.html
Copyright © 2011-2022 走看看