zoukankan      html  css  js  c++  java
  • 正则表达式基础

    正则表达式是在字符串中查找你需要的字符串,类似c++的find函数,但是他在不同的语言中有着相似(几乎不变的)语法,具体可以看:

    https://www.runoob.com/regexp/regexp-metachar.html

    下面仅记录一下最最基础的

    (有bf还会用这?当初为什么要先看这个???)

    (回来再看这句话,真香)

    正则表达式首先要import re

    查找的函数有:

    re.findall(规则,str)

    检索到字符串末尾而不是,返回一个list

    t=re.search(规则,str)

    返回一个re.Match类

    t.span()是输出第一个满足条件字符串前闭后开的区间

    t.start() ...起始位置

    t.end() 终止位置

    t.group()是直接返回字符串

    + :重复匹配前一个字符一次 或多次

    * :重复匹配前一个字符零次 或多次

    ? :重复匹配前一个字符零次或一次 (也有许多特殊的用途

    . :可以代表任意字符,(一般不特殊声明不能代表 )

    查url用 .*?即可 (这里?代表非贪婪,(就是只匹配到第一个满足 .*)

    比如

    s16.analyse=null;s16.answer=false;s16.content="<p><img src="http://edu-ixxx\"    /></p>";s16.id=217706595887825;s17.analyse=null;s17.answer=true;s17.content="<p><img src=\"http://edu-ixxx"    /></p>";s17.id=17706595887825;s18.analyse=null;s18.answer=false;s18.content="<p><img src=\"http://exxx\"    /></p>";

    reg='<p>.*?<p>' 就不会匹配到第一个<p>到最后一个<p>中间的东西,而是第一个<p>与第一个<p>中间的东西

    回车 换行(回车不代表换行), 制表(tab)等代表他们原本的意思

     代表匹配单词结尾 空格,和字符串结尾(?)

    d 对应匹配的是0~9的数字

    比如 xd 则是匹配第一个x后面是数字的字符串

    而xd+是匹配所以x后面是数字的字符串

    import re
    #r类似以只读模式打开
    reg1=r'cd'
    reg2=r'cd+'
    reg3=r'cd*'
    reg4=r'cd?'
    reg5=r'd'
    str='ad qcdac134c13'
    print(re.findall(reg1,str))
        ['c1', 'c1']
    print(re.findall(reg2,str))
        ['c134', 'c13']
    print(re.findall(reg3,str))
        ['c', 'c134', 'c13']
    print(re.search(reg4,str))
    <re.Match object; span=(3, 4), match='c'>
    print(re.findall(reg5,str))#匹配不到第二个d(后面没有空格)
        ['d']

    []:是匹配里面字符的任意一个 如果里面的ascii连续可以用-代替比如[a-z,0-8] 只能是1位字符不能是11-12这种

    s : 匹配任何空白字符 相当于 [ f v x20] x20是空格

    w :匹配包括下划线在内的单词字符 相当于[a-zA-Z0-9_] 中文居然也算!

    ^ : if出现在[]的第一个则代表[]里的在其后面的取反相当于c++中的 “!”

    $ :匹配前一个字符在字符串结尾的位置 通常用search

    [u4e00-u9fa5] 匹配一个中文字符 若要匹配句字则

    可用([u4e00-u9fa5]+)

    相反 [^u4e00-u9fa5]+可以匹配非中文字符

    reg1=r'd'
    reg2=r'w+'
    reg3=r'^q'
    reg4=r'[u4e00-u9fa5]+'
    str='ad qc dac134c13 撒发顺丰'
    print(re.findall(reg1,str))
    ['d']
    
    print(re.findall(reg2,str))
    ['ad', 'qc', 'dac134c13','撒发顺丰']
    
    print(re.findall(reg3,str))
    []
    print(re.findall(reg4,str))
    ['撒发顺丰']

    ():可以看成整体通常与其他符号搭配使用

    进阶正则可以看https://www.runoob.com/python/python-reg-expressions.html

  • 相关阅读:
    SQL Server 数据库基础编程
    SQL Server 数据库设计
    SQL Server T-SQL高级查询(转)
    MVC组件分析(转)
    HTTP MIME类型即HttpResponse.ContentType属性值列表
    dreamweaver cs6 的破解方法
    varchar和Nvarchar区别
    .NET 可选择的转型路径(转)
    IT职场求生法则(转)
    HTML常见元素集锦
  • 原文地址:https://www.cnblogs.com/cherrypill/p/12455234.html
Copyright © 2011-2022 走看看