美文网首页
正则表达式

正则表达式

作者: 梦诗酒年华 | 来源:发表于2018-07-06 17:53 被阅读0次

    正则表达式:

    正则表达式也叫匹配模式,它由一组具有特定含义的字符串组成,通常用于匹配和替换文本。

    正则表达式,是一个的技术,很多 编程语言支持正则表达式处理

    正则的使用:(大小写意思正好相反)

    re 中的常见方法:match()     findall()    finditer()  sub()   compile()  serch()

    match匹配第一个字符

    findall匹配所有的字符

    元字符:

    .                                                     #  匹配非换行的任意字符

    \d   (degist)                                              #匹配数字<==>[0123456789]<==>[0-9]表示匹配中括号里面出现的数字也就是所有数字(数字只有0-9十个数字)

    \D                                                #匹配非数字    

    \w                                                 #匹配有效字符:大小写字母+  数字+ 下划线(_)+各国语言字符(不建议使用)

    \W                                                #匹配特殊符号:-*/+=@#¥%&等符号

    \s                                                   #匹配空格位(\t代表table键)

    \S                                                   #匹配所有非空格位

    ^                                                    #以  开头

    $                                                     #以  结尾

    ^\d.*a$                                        #表示以数字开头 以a结尾的中间字符串

    \b                                                    #匹配单词

    []                                                    #表示查询[]中的字位 若是中文字体,则需要一个一个的写进去(不带,  若带则说明是要查询,)  0-9  a-z  A-Z区间可以任意选择比如[1-5]            [h-n]....若是多个区间则是直接写中间不加任何符号            [0-9a-zA-Z]也可以数字--字母            [0-z]用的是ascii码值排列

    [^dfg]                                            #表示匹配除了dfg这几个字母之外的所有字符

    注意:在python中两个"\"在输出中表示'\',因为'\'具有转义的作用

    在正则里面‘\’也具有转移的转义的作用   在正则里面当字符里面有多个‘\’的时候要用r将‘\’的转义的作用去除(有事没事就+r)

    位数:(须是英文符号)

    *                           表示多个或者0个              

     +                        必须是1或者多个不能是0个(返回值有或者没有  返回没有的时候返回空字符”'')                         

      ?                       表示0或者1

    {m}                     表示m位

    {m,}                    表示至少有m位

    {m,n}                  表示在m和n位之间(书写时不要有空格),闭区间

    ==============================================代码如下=============================================

    re模块的高级应用:

    1、 serch:

    执行正则表达式搜索并且在搜索结束后返回所匹配到的串,只返回第一次匹配的结果 返回值是一个迭代器。而findall则是返回所有匹配到的所有串。

    2、find:

    匹配所有的对象,返回一个列表

    3、sub:

    实现查找替换

    4、split:

    分割字符串,结果返回列表

    5、finditer:

    返回一个迭代器iterator,这个iterator返回顺序、内容和re.findall()相同

    6、compile:

    用来编译正则表达式模式字符串,并生成正则表达式对象。即改变正则表达式表达方法。

    re.I(IGNORECASE)忽略大小写,括号内是完整的写法

    re.M(MULTILINE)多行模式,改变^和$的行为

    re.S(DOTALL)点可以匹配任意字符,包括换行符

    re.L(LOCALE)做本地化识别的匹配,不推荐使用

    re.U(UNICODE)使用\w \W \s \S \d \D使用取决于unicode定义的字符属性。在python3中默认使用该flag

    re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释

    =========================================================================

    贪婪与懒惰:

    在Python中正则默认是贪婪模式(个别语言中也可能是非贪婪模式),贪婪模式就是总会尝试匹配更多的字符。非贪婪模式即懒惰模式则相反 懒惰模式总尝试匹配最少的字符。

    在*、?、+、{m,n}后面加上?,可以将贪婪模式变成非贪婪模式

    相关文章

      网友评论

          本文标题:正则表达式

          本文链接:https://www.haomeiwen.com/subject/klevuftx.html