美文网首页
正则表达式

正则表达式

作者: 阿顾_ | 来源:发表于2020-05-06 00:03 被阅读0次

      非Python独有 re库提供

    用法讲解:

       模式描述

    \w匹配字母数字及下划线

    \W匹配非字母数字下划线

    \s匹配任意空白字符,等价于 [\t\n\r\f].

    \S匹配任意非空字符

    \d匹配任意数字,等价于 [0-9]

    \D匹配任意非数字

    \A匹配字符串开始

    \Z匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串

    \z匹配字符串结束

    \G匹配最后匹配完成的位置

    \n匹配一个换行符

    \t匹配一个制表符

    ^匹配字符串的开头

    $匹配字符串的末尾。

    .匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。

    [...]用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'

    [^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。

    *匹配0个或多个的表达式。

    +匹配1个或多个的表达式。

    ?匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

    {n}精确匹配n个前面表达式。

    {n, m}匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

    a|b匹配a或b

    ( )匹配括号内的表达式,也表示一个组

    re.match  尝试从字符串的起始位置匹配一个模式,如果不是起始位置配置成功的恶化,match()就返回none

    re.match(pattern,string,flags=0)  以^为开头 以$结束

    贪婪模式与非贪婪模式 :

    重点:.*以及.*? 前者贪 后者不贪 以?后者为基准

    转义: 特殊字符的处理 前面加上'\' 使得正则的表达式失去意义

    小节:

       尽量使用泛匹配,使用括号得到匹配目标,尽量使用非贪婪模式、有换行符就换re.S

    re.search 扫描整个字符串并返回第一个成功的匹配 不在意开头如何

    建议:为匹配方便,能用search就不用match 

    re.findall 搜索字符串 以列表形式返回全部能匹配的子串  list类型

    re.sub 替换字符串中每一个匹配的子串后返回替换后的字符串 (pattern,'内容',string)

    特殊:包含原字符本身 r'\ 使用转义

    re.compile 将正则字符串编译成正则表达式对象

    以便于复用该匹配模式 (方便复用匹配模式)

    pattern = re.complie(pattern,re.S)

    以pattern作为字符串传递

    经验:

    ^a-zA-Z 匹配非字母以外的鬼东西

    去除中文以外的东西 

    import re

    sample = u'I am from 美国。We should be friends. 朋友。'

    for n in re.findall(u'[\u4e00-\u9fff]+',sample):

        print(n)

    相关文章

      网友评论

          本文标题:正则表达式

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