美文网首页
python正则表达式

python正则表达式

作者: 山高路陡 | 来源:发表于2020-07-21 12:06 被阅读0次

    python正则表达式

    • 概念:对字符串的一种逻辑公式,
    • 使用规则从原字符串中提取想要的字符串
    • 应用场景:表单验证,爬虫

    字符

    • 普通字符:字母,数字,汉字,下划线,语言符号,没有特殊定义的符号
      • 在匹配中只匹配与自身相同的一个字符
    • 元字符:
      • . :匹配除了换行\n以外的任意一个字符
      • [ ] :匹配字符集中的一个字符如[asfde]
      • [^] :匹配字符集以外的字符如[^asdf]
      • - :字符区间如0-9,a-z
      • \ :转义字符
      • ():对表达式进行分组,括号中的内容作为一个整体,并获取匹配的值
      • |:逻辑或操作符
    • 预定义匹配字符集
      • \d: [0-9]
      • \D:[^0-9]
      • \w:[a-zA-Z0-9_]
      • \W:[^a-zA-Z0-9_]
      • \s:空格,制表符,换页符等空白字符
      • \S:除空白字符以外的字符
    • 正则字符.png

    重复匹配

    • 一个字符匹配多次,可以在匹配规则中将字符重复多次,也可以在要多次匹配的字符后使用{n}表示
    • {n}:匹配n次
    • {m,n}:m<=n,匹配的次数在m到n之间,包含m,n
    • {m,}:匹配次数大于等于m次,
    • {,n}:匹配次数小于等于n次
    • ?:相当于{0,1}匹配0次或1次
    • +:相当于{1,},至少匹配1次
    • *:相当于{0,},不限匹配次数

    位置匹配和非贪婪匹配

    • 位置匹配
      • ^:从字符串开始匹配
      • $:在字符串结束的地方匹配
      • \b:匹配单词边界,
      • \B:匹配非单词边界
    • 贪婪与非贪婪模式
      • 在重复匹配时,正则默认总是尽可能多的匹配--贪婪匹配
      • 非贪婪则是尽可能少的匹配
      • (.*?):匹配 (.) 中的字符集组成的字符串0次或1次

    re模块常用方法

    • re.complie(pattern[,flags])-->根据正则表达式的字符串创建模式对象,该对象可以调用匹配方法

    • re.search(pattern,string[,flags])-->在字符串中查找,从任意位置开始,返回查找到的对象

    • re.match(pattern,string[,flags])-->在字符串开始处匹配

    • re.findall(pattern,string[,flags])-->列出字符串模式中的所有匹配项

    • re.split(pattern,string[,maxsplit=0,flags])-->根据匹配模式分割字符串,返回分割后的字符串列表,maxsplit分割次数

    • re.sub(pat,repl,string[,count=0,flags])-->将字符串中所有的pat替换成repl,返回替换后的新字符串,count替换次数

    • flags参数:

      • re.A ascii字符模式
      • re.I 不区分大小写
      • re.L 做本地化识别
      • re.M 多行匹配
      • re.S 使.能够匹配所有字符
      • re.U Unicode字符集解析字符
      • re.X

    分组

    • 使用()将匹配出来的字符进行二次筛选

    • .groups()返回二次筛选后组成的元组

    • .group()返回匹配到的所有字符串

    • .group(n)返回匹配到的字符串二次筛选后的第n个字符串

    • import re
      pat = 'a(.*?)a.*?f(.*?)g'
      # group()这是该规则匹配大的所有字符
      # group(1)表示第一个(.*?)匹配到的字符组成的字符串
      # groups()表示这两个(.*?)匹配到的字符串组成的元组
      

    相关文章

      网友评论

          本文标题:python正则表达式

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