zoukankan      html  css  js  c++  java
  • 分组在re模块中的使用以及使用正则表达式的技巧

    1.split:切割

    使用split不会返回被切割的字符

    1 import re
    2 ret = re.split("d+","5as46asf46asf46a")
    3 print(ret)

    结果为:['', 'as', 'asf', 'asf', 'a']

    要想返回被切割的数字,需要在正则表达式前后加( )

    1 import re
    2 ret1 = re.split("(d+)","5as46asf46asf46a")
    3 print(ret1)

    结果为:['', '5', 'as', '46', 'asf', '46', 'asf', '46', 'a']

    2.分组命名:(?P<这个组的名字>正则表达式)

    1 import re
    2 s = "<a>wahaha</a>"
    3 ret = re.search("<w+>(?P<abc>w+)</w+>",s)
    4 print(ret.group())#结果为<a>wahaha</a>
    5 print(ret.group("abc"))#结果为wahaha

    3.使用findall可以取到分组中的内容,在表达式中加( )可以优先显示分组中的内容

    1 import re
    2 s = "<a>wahaha</a>"
    3 ret = re.findall("<w+>(w+)</w+>",s)
    4 print(ret)#结果为["wahaha"]

    如果要取消分组优先,使用(?:正则表达式)

    1 import re
    2 s = "<a>wahaha</a>"
    3 ret = re.findall("<w+>(w+)</w+>",s)
    4 ret1 = re.findall("<w+>(?:w+)</w+>",s)
    5 print(ret)#结果为["wahaha"]
    6 print(ret1)#结果为["<a>wahaha</a>"]

    在网页html中,如果使用分组,要求使用这个名字的分组和前面的同名分组中的内容匹配的必须一致

    前一个标签可以用?P<tab>,后一个标签可以用?P=tab

    import re
    1
    pattern = "<(?P<tab>w+)>(w+)</(?P=tab)>" 2 ret = re.search(pattern,s) 3 print(ret.group())#结果为:<a>wahaha</a>

    4.

    1 import re
    2 ret1 = re.findall(r"d+.d+|d+","1-2*(60+(-40.35/5)-(-4*3))")
    3 print(ret1)结果为:['1', '2', '60', '40.35', '5', '4', '3']

    如果要过滤掉小数:

    1 import re
    2 ret2 = re.findall(r"d+.d+|(d+)","1-2*(60+(-40.35/5)-(-4*3))")
    3 print(ret2)结果为:['1', '2', '60', '', '5', '4', '3']
  • 相关阅读:
    1."问吧APP"客户需求调查分析
    “软件工程”课程的学习目标
    范式
    知乎:有哪些让你相见恨晚的 PPT 制作技术或知识?
    前端指南
    在网页中JS函数自动执行常用三种方法
    index的用法
    搜索引擎的正确姿势
    display与visibility
    bootstrap之模态框
  • 原文地址:https://www.cnblogs.com/s593941/p/9494802.html
Copyright © 2011-2022 走看看