zoukankan      html  css  js  c++  java
  • 正则表达式提取数据

    1. 什么是正则表达式

    用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑.

    2. 正则表达式的常见语法

    试试下面正则的结果,注意. 不能匹配
    
    string_a = '<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta content="always" name="referrer"> <meta name="theme-color" content="#2932e1">' ret = re.findall("<.*>",string_a) print(ret)

    3.re模块的常见方法

    re.match(从头找一个)

    re.search(从整个字符串找,找出一个)

    re.findall(找出所有的,返回一个列表)

    re.sub(替换) 第一个参数是要替换的字符串,第二个是替换后的字符串,第三个是整个字符串

    re.compile(编译)

    返回一个模型P,具有和re一样的方法,但是传递的参数不同,匹配模式需要传到compile中.

    p = re.compile("d",re.S) 
    p.findall("python111")
    re.S 和re.DOTALL表示匹配换行,re>I 表示忽略大小写

    4. python中原始字符串r的用法

    原始字符串定义(raw string):所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符,原始字符串往往针对特殊字符而言。例如" "的原始字符串就是"\n".

    总结:正则中使用原始字符串r能够忽略转义符号带来的影响,加上原始字符串r之后,待匹配的字符串中有多少个,正则中就添加多少个即可.

    windows中原始字符串r的使用,由于windows中的路径用表示,但是在正则表达式中,表示转义,如果不用r,正则会试图将它转义,这样就会标错.

    重点: re.findall(r“a.*bc”,”a bc”,re.DOTALL)re.findall(r“a(.*)bc”,”a bc”,re.DOTALL)的区别?

    不分组时匹配的是全部,分组后匹配的是组内的内容.

     

    re模块匹配分组

    split 根据匹配进行切割字符串,并返回一个列表

    #coding=utf-8
    import re
    
    ret = re.split(r":| ","info:xiaoZhang 33 shandong")
    print(ret)

    注意点 :
    匹配出<html>hh</html>  ret = re.match(r"<([a-zA-Z]*)>w*</1>", "<html>hh</html>")

    匹配出<html><h1>www.Python.cn</h1></html>  ret = re.match(r"<(w*)><(w*)>.*</2></1>", label)

    匹配出<html><h1>www.python.cn</h1></html>
    ret = re.match(r"<(?P<name1>w*)><(?P<name2>w*)>.*</(?P=name2)></(?P=name1)>", "<html><h1>python</h1></html>")

    注意:(?P<name>)(?P=name)中的字母p大写

     


     

     


  • 相关阅读:
    webpack学习总结
    jquery弹出下拉列表插件(实现kindeditor的@功能)
    html meta标签使用总结
    Techparty-广州Javascript技术专场(学习分享)
    一个三年工作经验的软件工程师的经验之谈
    cf--------(div1)1A. Theatre Square
    离线网页制作器(beta1.0)
    uva---(11549)CALCULATOR CONUNDRUM
    CF---(452)A. Eevee
    Uva----------(11078)Open Credit System
  • 原文地址:https://www.cnblogs.com/yinjiangchong/p/9439837.html
Copyright © 2011-2022 走看看