• re模块


    re模块

    从字符串里找到特定的字符

    re的基本语法(匹配规则)

    import re
    
    s = '王大炮打炮被大炮打死了 王大炮打炮被大炮打死了'
    #    0 1 2 3 4 5 6 7 8 9 10
    # print(s[1:3], s[6:8])
    # res = re.findall('大.',s)
    # print(res)
    # ^: 开头
    print(re.findall('^王大炮', s))
    # $: 结尾
    print(re.findall('死了$', s))
    # []: 匹配中间的字符,只要单个字符
    s = 'acefghjkacefsdfsdf'
    print(re.findall('[acef]', s))  # 只要单个字符
    # []+^联用: ^对[]内的元素取反
    print(re.findall('[^acef]', s))
    # .: 任意字符(除了
    )
    s = 'abacadaeaf'
    print(re.findall('a..', s))
    

    ['王大炮']
    ['死了']
    ['a', 'c', 'e', 'f', 'a', 'c', 'e', 'f', 'f', 'f']
    ['g', 'h', 'j', 'k', 's', 'd', 's', 'd']
    ['aba', 'ada']

    s = 'abaacaaaaa'
    # *: 前面的字符0-无穷个
    print(re.findall('a*', s))
    # +: 前面的字符1-无穷个
    print(re.findall('a+', s))
    # ?: 前面的字符0-1个
    print(re.findall('a?', s))
    # {m}: 前面的字符m个
    print(re.findall('a{5}', s))
    # {n,m}: 前面的字符2-3个  # 'abaacaaaaa'
    #                            a aa aaa aa
    print(re.findall('a{2,5}', s))
    
    

    ['a', '', 'aa', '', 'aaaaa', '']
    ['a', 'aa', 'aaaaa']
    ['a', '', 'a', 'a', '', 'a', 'a', 'a', 'a', 'a', '']
    ['aaaaa']
    ['aa', 'aaaaa']

    # d: 数字
    s = 's  1   s+
    =$	2_s  3'
    print(re.findall('d', s))
    # D: 非数字
    print(re.findall('D', s))
    # w: 数字/字母/下划线
    print(re.findall('w', s))
    # W: 非数字/字母/下划线
    print(re.findall('W', s))
    # s: 空格/	/
    
    print(re.findall('s', s))
    # S: 非空格/	/
    
    print(re.findall('S', s))
    ```
    ['1', '2', '3']
    ['s', ' ', ' ', ' ', ' ', ' ', 's', '+', '
    ', '=', '$', '	', '_', 's', ' ', ' ']
    ['s', '1', 's', '2', '_', 's', '3']
    [' ', ' ', ' ', ' ', ' ', '+', '
    ', '=', '$', '	', ' ', ' ']
    [' ', ' ', ' ', ' ', ' ', '
    ', '	', ' ', ' ']
    ['s', '1', 's', '+', '=', '$', '2', '_', 's', '3']
    
    ```
    
    # : 取消意义
    s = 'abad'
    print(re.findall(r'a\d', s))
    
    # .*: 贪婪模式(最大化),找到继续找,让结果最大化
    s = 'abbbcabc'
    print(re.findall('a.*c', s))
    
    # .*?: 非贪婪模式(最小化),找到就马上停止
    print(re.findall('a.*?c', s))
    
    # (): 只要括号内的
    s = 'abacad'
    print(re.findall('a(.)', s))
    
    # A|B: A和B都要
    s = 'abacad'
    print(re.findall('a|b', s))
    
    
    

    ['ad']
    ['abbbcabc']
    ['abbbc', 'abc']
    ['b', 'c', 'd']
    ['a', 'b', 'a', 'a']

    re模块的方法

    re.compile

    修饰符 描述
    re.I 使匹配对大小写不敏感
    re.L 做本地化识别(locale-aware)匹配
    re.M 多行匹配,影响 ^ 和 $
    re.S 使 . 匹配包括换行在内的所有字符
    re.U 根据Unicode字符集解析字符。这个标志影响 w, W, , B.
    re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

    import re
    s = 'abc123
    def456'
    # print(re.findall('d+',s))
    # com = re.compile('d+')
    par = 'd+'
    # com = re.compile('3.',re.S)
    # print(re.findall(com, s))
    print(re.findall('3.', s, re.S))
    
    s = '123abc123
    def456'
    print(re.findall('d+', s))
    

    ['3 ']
    ['123', '123', '456']

    import re
    s = '123abc123
    def456'
    # re.mathch(): 从开头搜索,搜索到了就有,没搜索到就是none
    res = re.match('d+', s)
    print(res)
    print(res.group())
    
    # re.search(): 搜索第一个匹配结果,找到了就不找了
    res = re.search('d+', s)
    print(res)
    print(res.group())
    
    

    <_sre.SRE_Match object; span=(0, 3), match='123'>
    123
    <_sre.SRE_Match object; span=(0, 3), match='123'>
    123

    # re.split(): 按照匹配规则切割
    import re
    s1 = 'abc324asdfk234lkjsf324lkj'
    print(re.split('d+', s1))
    
    # re.sub(): 按照匹配规则替换(**********)
    print(re.sub('d+', '***', s1))
    
    # re.subn(): 按照匹配规则替换,并计数
    print(re.subn('d+', '***', s1))
    
    # 分组: 一个括号里的叫一个分组, django, 了解
    s = 'abc123edf456'
    res = re.search('abc(?P<abc>d+)edf(?P<edf>d+)', s)
    print(res.groupdict())
    
    
    ['abc', 'asdfk', 'lkjsf', 'lkj']
    abc***asdfk***lkjsf***lkj
    ('abc***asdfk***lkjsf***lkj', 3)
    {'abc': '123', 'edf': '456'}
    
    
  • 相关阅读:
    如何只通过Sandboxed Solution启动一个定时执行的操作
    创建与SharePoint 2010风格一致的下拉菜单 (续) 整合Feature Custom Action框架
    创建与SharePoint 2010风格一致的下拉菜单
    《SharePoint 2010 应用程序开发指南》第二章预览
    SharePoint 2013 App 开发 (1) 什么是SharePoint App?
    使用Jscex增强SharePoint 2010 JavaScript Client Object Model (JSOM)
    搜索范围的管理
    SharePoint 2010 服务应用程序(Service Application)架构(1)
    SharePoint 2010 服务应用程序(Service Application)架构(2)
    SharePoint 2013 App 开发 (2) 建立开发环境
  • 原文地址:https://www.cnblogs.com/aden668/p/11384237.html
Copyright © 2020-2023  润新知