zoukankan      html  css  js  c++  java
  • python学习之正则表达式


    元字符 .^$*+?{}[]|()
    . 通配符,任意一个字符
    ^ 字符串开头匹配
    $ 字符串结尾匹配

    * 紧挨着字符重复(0-无穷次)
    + 加号前面字符至少有一个(1-无穷次)
    ? (0-1)
    {} {0,} = *
    {1,} = +
    {0,1} = ?
    {6} 贪婪匹配
    注意,*,+,?,等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配

    反斜杠后边跟元字符去除特殊功能, 如.
    反斜杠后边跟普通字符实现特殊功能,如d

     匹配一个特殊字符边界,如空格,&,#

    | 或

    () 分组

    [] 字符集 中括号里没有特殊符号,特殊: ‘-’ 范围 ,‘^’ 非 ,‘’转义符

    ?P<name> (?P<name>)分组命名
    例:
    >>> re.search("(?P<name>d+)","alan39wang88liu77")
    <_sre.SRE_Match object; span=(4, 6), match='39'>
    >>> re.search("(?P<name>[a-z]+)","alan39wang88liu77").group("name")
    'alan'
    >>> re.search("(?P<name>[a-z]+)","alan39wang88liu77").group()
    'alan'
    >>> re.search("(?P<name>[a-z]+(?P<age>d+))","alan39wang88liu77").group()
    'alan39'
    >>> re.search("(?P<name>[a-z]+)(?P<age>d+)","alan39wang88liu77").group("name")
    'alan'
    >>> re.search("(?P<name>[a-z]+)(?P<age>d+)","alan39wang88liu77").group("age")
    '39'

    re.findall("^H[w]*[ w\\d]*","Hello World") 结果 ['Hello Worl\d'] #返回所有满足匹配条件的结果,放在列表里
    re.search("d+","aabdde34kdf3").group() #函数会在字符串内查找模式匹配,只找到第一个匹配
    #通过调用group()方法得到匹配的字符串,
    re.match("d+","56daffdfd").group() #同search,不过尽在字符串开始处进行匹配
    re.split('[ab]','abcd') 结果['','','cd'] #先按'a'分割到''和'bcd',在对''和'bcd'分别按'b'分割,
    re.sub("d+","a","fdfefj20303r") 结果'fdfefjar' 替换
    re.subn("d+","a","fdfefj20303rdfd4") 结果('fdfefjardfda', 2) 替换并返回替换次数
    com=re.compile("d+") com.findall('dfd4df5') 结果['4', '5'] #编译(效率提升)
    i=re.finditer("d","df3lj3ljl34ljj45l4jlj2kdjfw") 取值:next(i).group() #迭代对象,大数据匹配不用全部写入内存,用一个取一个
    re.findall("www.(?:baidu|163).com","dd2fjlsjwww.baidu.comfjldjflsj")
    结果1:['www.baidu.com'] 加上"?:"去掉分组优先级
    结果2:['baidu'] 分组优先级高

  • 相关阅读:
    Thinking in Java Reading Note(9.接口)
    Thinking in java Reading Note(8.多态)
    Thinking in Java Reading Note(7.复用类)
    SQL必知必会
    Thinking in Java Reading Note(5.初始化与清理)
    Thinking in Java Reading Note(2.一切都是对象)
    鸟哥的Linux私房菜笔记(1.基础)
    Thinking in Java Reading Note(1.对象导论)
    CoreJava2 Reading Note(2:I/O)
    CoreJava2 Reading Note(1:Stream)
  • 原文地址:https://www.cnblogs.com/jinpingzhao/p/12712231.html
Copyright © 2011-2022 走看看