zoukankan      html  css  js  c++  java
  • re正则表达式

    正则表达式主要是进行模糊匹配

    1、普通字符       完全匹配

    2、元字符    ^   $  *  +  ?  {}  []  | 

    .    通配符    什么都可以代替数字、字母等等   出来换行符      代表任意一个字符例如:

    1 import re
    2 a = 'sddfsaljhhxsdlkjfeojfk'
    3 b = re.findall('al...x',a)
    4 print(b)
    5 输出:
    6 ['aljhhx']

    ^   以什么开头  只能在字符串的开头开始匹配   例如:

    1 import re
    2 a = 'sddfsaljhhxsdlkjfeojfk'
    3 b = re.findall('^s..f',a)
    4 print(b)
    5 输出:
    6 ['sddf']

    $  以什么结尾  在字符串的结尾  例如:

    1 import re
    2 a = 'sddfsaljhhxsdlkjfeojfk'
    3 b = re.findall('jfk$',a)
    4 print(b)
    5 输出:
    6 ['jfk']

    *  挨着的前面的重复0到无穷次    + 出现1到无穷次   例如:

    1 import re
    2 a = re.findall('alex*','akdkfjaleserdf')
    3 print(a)
    4 输出:
    5 ['ale']
    1 import re
    2 a = re.findall('alex+','akdkfjalexxxxxxxxxxxserdf')
    3 print(a)
    4 输出:
    5 ['alexxxxxxxxxxx']
    1 import re
    2 a = re.findall('alex+','akdkfjaleserdf')
    3 print(a)
    4 输出:
    5 []

    ? 0个或者1个   例如:

    1 import re
    2 a = re.findall('alex?','akdkfjaleserdf')
    3 print(a)
    4 输出:
    5 ['ale']

    { }      {0,} ==*     {1,}==+       {0,1} ==?    {6}  重复6次       {1,6} 重复1到6中间的次数   例如:

    1 import re
    2 a = re.findall('alex{0,6}','akdkfjaleserdf')
    3 print(a)
    4 输出:
    5 ['ale']

    默认都是贪婪匹配,加上?变为非贪婪匹配匹配的越少越好    例如:

    1 import re
    2 a = re.findall('alex*?','akdkfjalexxxxserdf')
    3 print(a)
    4 输出:
    5 ['ale']
    1 import re
    2 a = re.findall('alex+?','akdkfjalexxxxserdf')
    3 print(a)
    4 输出:
    5 ['alex']

    元字符之字符集  [  ]   字符集里面没有特殊字符

    第一个功能或者的意思 例如:

    1 import re
    2 a = re.findall('a[abc]','ackljlkab ajjcjjajjcba ab')
    3 print(a)
    4 输出:
    5 ['ac', 'ab', 'ab']

    在字符集中的功能符号: -      ^

      -  表示范围   例如:

    1 import re
    2 a = re.findall('a[a-z]','au')
    3 print(a)
    4 输出:
    5 ['au']
    1 import re
    2 a = re.findall('a[a-z]*','auasdfsdfs9')
    3 print(a)
    4 输出:
    5 ['auasdfsdfs']

    ^   取反  例如:

    1 import re
    2 a = re.findall('a[^a-z]','a6uasdfsdfs9')
    3 print(a)
    4 输出:
    5 ['a6']

    [^a-z]   表示非a-z  例如:

    1 import re
    2 a = re.findall('([^()]+)','12+(34*6+2-5*(2-1))')
    3 print(a)
    4 输出:
    5 ['(2-1)']

    让有意义的变为没有意义,没有意义的变为有意义的

    读取文档   用S 去掉空格等  返回列表

    1 import re
    2 f = open('TEXT','r',encoding='utf-8')
    3 f_read = f.read()
    4 a = re.findall('S+',f_read)
    5 print(a)
    6 f.close()
    7 输出:
    8 ['NIHAO拉时间段佛阿萨德', '第三方年卡就是电话是的快乐风男', '奥德赛可发货呢', '大师傅nlas', '路上看到合法jes']

    d  匹配任何十进制数;它相当于类[0-9]

    D  匹配任何非数字字符;它相当于类[^0-9]

    s   匹配任何空白字符;它相当于类[ fv]

    S  匹配任何非空白字符;它相当于类[^ fv]

    w   匹配任何字母数字字符;它相当于类[a-zA-Z0-9_]

    W   匹配任何非字母数字字符;它相当于类[^a-zA-Z0-9_]

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

  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/ch2020/p/12405278.html
Copyright © 2011-2022 走看看