zoukankan      html  css  js  c++  java
  • 拓展:正则表达式-初识

    该部分为中谷教育Python视频教程的学习笔记
    正则表达式(RE)是一种小型的高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过re模块实现。
    其作用:
    1.可以为想要匹配的相应字符串集指定规则
    2.该字符串集可能包含英文语句、email地址、命令或者任何你想搞定的东西
    3.可以问诸如“这个字符串匹配该模式吗?”
    4“在这个字符串中是否有部分匹配该模式呢?”
    5.你也可以使用RE以各种方式来修改或分割字符串
    正则表达式是一门独立的语言,并不是python中特有的。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。
    (并非所有字符串处理都能用正则表达式完成) 
    字符匹配:
    普通字符:
        大多数字字母和字符一般都会和自身匹配
        如正则表达式test会和字符串“test”完全匹配
    元字符
        . ^ $ * + ? {} [] | ()

    []方括号
         常用来指定一个字符集:[abc];[a-z]
        元字符在字符集中不起作用:[akm$]
        补集匹配不在区间范围内的字符:[^5]
    这是最原始的 通过普通字符去匹配它自身

    >>> import re
    >>> s = 'abc'
    >>> 
    >>> s = r'abc'
    >>> 
    >>> re.findall(s,'aaaaaaaaaads sscabc')
    ['abc']
    >>> re.findall(s,'aaaaaaaaaads sscab')
    []
    >>> re.findall(s,'aaabcaaaabcaaads sscab')
    ['abc', 'abc']
    >>>

    有些时候规则有些变化

    >>> st = 'top tip tqp twp tep'                #定义一个字符串
    >>> 
    >>> res = r'top'                            #定义一个正则表达式
    >>> 
    >>> re.findall(res,st)                #在字符串里匹配
    ['top']
    >>> res = r'tip'
    >>> re.findall(res,st)
    ['tip']
    >>> res = r't[io]p'            #如果要匹配tip和top,那么用方括号
    >>> 
    >>> re.findall(res,st)
    ['top', 'tip']
    >>> res = r't[^io]p'            #如果要匹配除了tip和top之外的区间,那么使用[^io]
    >>> re.findall(res,st)
    ['tqp', 'twp', 'tep']
    >>>

    ^
        匹配行首。除非设置MULTILINE标志,它只是匹配字符串的开始。在MULTILINE模式里,它也可以直接匹配字符串中的每个换行。

    >>> import re
    >>> s = 'hello world,hello boy' 
    >>> r = r'hello'
    >>> re.findall(r,s)
    ['hello', 'hello']
    >>> r = r'^hello'
    >>> re.findall(r,s)
    ['hello']
    >>> s = 'world,hello boy'
    >>> re.findall(r,s)
    []
    >>> r = r'^world'
    >>> re.findall(r,s)
    ['world']
    >>>

    $
        匹配行尾,行尾被定义为要么是字符串尾,要么是一个换行字符后面的任何位置。

    >>> s = 'world,hello boy'
    >>> r = r'boy$'
    >>> re.findall(r,s)
    ['boy']
    >>>
    综合示例:
    >>> import re
    >>> 
    >>> r = 't[abc$]'
    >>> 
    >>> re.findall(r,'ta')
    ['ta']
    >>> re.findall(r,'tb')
    ['tb']
    >>> re.findall(r,'tax')
    ['ta']
    >>> re.findall(r,'t$')          #这里$符号作为一个普通的字符输出
    ['t$']
    >>> r = 't[abc^]'
     #这里^符号也是作为一个普通的字符输出。如果放在开头如't[^abc]'那就是取匹配区间外的字符串了
    >>> re.findall(r,'t^')  
    ['t^']
    >>> 
    >>> r = r'x[0123456789]x'           #可以写成x[0-9]x
    >>> 
    >>> re.findall(r,'x1x')
    ['x1x']
    >>> re.findall(r,'x1x,x2x')
    ['x1x', 'x2x']
    >>> re.findall(r,'x1x,x2x,x9x')
    ['x1x', 'x2x', 'x9x']
    >>> r = r'x[0-9]x'
    >>> re.findall(r,'x1x,x2x,x9x')
    ['x1x', 'x2x', 'x9x']
    >>> r = r'x[a-zA-Z0-9]x'        #同理,匹配一个比较大的范围,用-号
    >>> re.findall(r,'x1x,xRx,xgx')
    ['x1x', 'xRx', 'xgx']
    >>>
  • 相关阅读:
    python模块—socket
    mac os系统的快捷键
    教你如何将UIImageView视图中的图片变成圆角
    关于ASP.NET MVC
    iOS 日期格式的转换
    将App通过XCode上传到AppStore 出现这个错误“An error occurred uploading to the iTunes Store”的解决方法
    关于MAC OS下面两个软件的功能改进——Dictionary和Fit 输入法
    分享一下上个星期的香港行程
    【博客园IT新闻】博客园IT新闻 iPhone 客户端发布
    解决Entity Framework Code First 的问题——Model compatibility cannot be checked because the database does not contain model metadata
  • 原文地址:https://www.cnblogs.com/fishdm/p/3578875.html
Copyright © 2011-2022 走看看