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

    '.'     默认匹配除
    之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
    '^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","
    abc
    eee",flags=re.MULTILINE)
    '$'     匹配字符结尾,或e.search("foo$","bfoo
    sdfsf",flags=re.MULTILINE).group()也可以
    '*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']
    '+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']
    '?'     匹配前一个字符1次或0次
    '{m}'   匹配前一个字符m次
    '{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']
    '|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
    '(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c
     
     
    'A'    只从字符开头匹配,re.search("Aabc","alexabc") 是匹配不到的
    ''    匹配字符结尾,同$
    'd'    匹配数字0-9
    'D'    匹配非数字
    'w'    匹配[A-Za-z0-9]
    'W'    匹配非[A-Za-z0-9]
    's'     匹配空白字符、	、
    、
     , re.search("s+","ab	c1
    3").group() 结果 '	'
     
    '(?P<name>...)' 分组匹配 re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict("city") 
    结果{'province': '3714', 'city': '81', 'birthday': '1993'}
    re.split("[0-9]","abc12sd26c6c56cc")结果:['abc', '', 'sd', '', 'c', 'c', '', 'cc']
    re.search()
    er=re.sub("[0-9]+",",","ac2ada1dasd1a2s",count=2)结果:ac,ada,dasd1a2s


    ass=re.sub(r"\",",","asdaadf")
    ass=re.sub(r"\",",","asdaa\df")结果:asdaa,df
    ass=re.sub(r"\",",","asdaa\df")结果:asdaa,,df

      

    反斜杠的困扰
    与大多数编程语言相同,正则表达式里使用""作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\"表示。同样,匹配一个数字的"\d"可以写成r"d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。

    re.match()-----从头开始搜索

    re.search()-----所有搜索只有一个就返回

    re.findall()-----所有搜索返回多个

    |转义|

    常用匹配语法:

     re.match 从头开始匹配

    re.search 匹配包含

    re.findall 把所有匹配到的字符放到以列表中的元素返回

    re.splitall 以匹配到的字符当做列表分隔符

    re.sub 匹配字符并替换 

    匹配模式:

    re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)re.search("[a-z]+","avcA",flags=re.I)
    M(MULTILINE): 多行模式,改变'^''$'的行为(参见上图)(r"^a"," abc eee",flags=re.MULTILINE)
     S(DOTALL): 点任意匹配模式,改变'.'的行为(r".+","
    acx
    asd",flags=re.s)

      

     

  • 相关阅读:
    将Nginx添加到windows服务中
    springboot使用redis管理session
    GIT常用命令
    阻止360、谷歌浏览器表单自动填充
    谈谈对Spring IOC的理解
    同一个Nginx服务器同一端口配置多个代理服务
    LeetCode 653. Two Sum IV
    109. Convert Sorted List to Binary Search Tree(根据有序链表构造平衡的二叉查找树)
    108. Convert Sorted Array to Binary Search Tree(从有序数组中构造平衡的BST)
    LeetCode 236. Lowest Common Ancestor of a Binary Tree(二叉树求两点LCA)
  • 原文地址:https://www.cnblogs.com/cy2268540857/p/12434566.html
Copyright © 2011-2022 走看看