• 正则表达式


      1 import re
      2 
      3 res = r"速度[1-8a-zA-Z]"  # 1...8 a...z A...Z
      4 result = re.match(res, "速度z")
      5 print(result)
      6 # 匹配出的数据
      7 print(result.group())
      8 
      9 import re
     10 
     11 res = r"速度w"  # 0...9 a...z A...Z 所有汉字
     12 result = re.match(res, "速度哈哈")
     13 print(result)
     14 # 匹配出的数据
     15 print(result.group())
     16 
     17 res = r"速度Wd"  # 非单词字符
     18 result = re.match(res, "速度,1")
     19 print(result)
     20 # 匹配出的数据
     21 print(result.group())
     22 
     23 res = r"速度sd"  # 空格 tab键 0..9
     24 result = re.match(res, "速度	1")
     25 print(result)
     26 # 匹配出的数据
     27 print(result.group())
     28 
     29 res = r"速度Sd"  # 大写的S匹配非空白
     30 result = re.match(res, "速度啦1")
     31 print(result)
     32 # 匹配出的数据
     33 print(result.group())
     34 
     35 res = r"速度."  # 通配符,匹配任意
     36 result = re.match(res, "速度#")
     37 print(result)
     38 # 匹配出的数据
     39 print(result.group())
     40 
     41 res = r"速度d{1,2}"  # 匹配指定位数1到2位
     42 result = re.match(res, "速度19")
     43 print(result)
     44 # 匹配出的数据
     45 print(result.group())
     46 
     47 res = r"d{11}"  # 匹配连续11位的数字
     48 result = re.match(res, "13500000000")
     49 print(result)
     50 # 匹配出的数据
     51 print(result.group())
     52 res = r"a{11}"  # 匹配一个字符出现多少次
     53 result = re.match(res, "aaaaaaaaaaa")
     54 print(result)
     55 # 匹配出的数据
     56 print(result.group())
     57 
     58 res = r"d{3,4}-?d{7,8}"  # ?匹配前面那个可有可无
     59 # result = re.match(res, "028-12345678")
     60 result = re.match(res, "0531-12345678")
     61 print(result)
     62 # 匹配出的数据
     63 print(result.group())
     64 
     65 html = """qwert
    asdfg"""
     66 res = r".*"  #  匹配出现0次或无限次  *除了
    都能匹配
     67 result = re.match(res, html)
     68 print(result)
     69 
     70 html = """qwert
    asdfg
    zxcvb"""
     71 res = r".*"  # *除了
    都能匹配
     72 result = re.match(res, html, re.S)  # re.s匹配出
    的所有数据
     73 print(result)
     74 
     75 str1 = """qwertasdfgzxcvb"""
     76 res = r".+"  # 匹配出现1次或无限次
     77 result = re.match(res, str1)  # re.s匹配出
    的所有数据
     78 print(result)
     79 
     80 判断变量是否合法
     81 
     82 import re
     83 
     84 
     85 def main():
     86    names = ["name1", "_name", "str!", "__main__", "1name", "_age_1", "a#123"]
     87    res = r"^[a-zA-Z_][a-zA-Z0-9_]*$"
     88 
     89    for name in names:
     90       ret = re.match(res, name)
     91       if ret:
     92          print("变量名:%s 符合要求" % ret.group())
     93       else:
     94          print("变量名:%s 不符合要求" % name)
     95 
     96 
     97 if __name__ == '__main__':
     98    main()
     99 
    100 邮箱验证
    101 
    102 import re
    103 
    104 email = [
    105    'ronle@163.com',
    106    '441030517@QQ..com',
    107    '119941779@qq,com',
    108    '5579001QQ@.COM',
    109    '1107531656@q?q?.com',
    110    '654088115@@qq.com',
    111    '495456580@qq@139.com',
    112    '279985462@qq。com.cn',
    113    'chen@foxmail.com)m',
    114    '2990814514@QQ.COM',
    115    'xxxxxxxxx@_.com.cn',
    116    'xxxxxxxxx@wwew_163sadasdf.com.cn'
    117 ]
    118 # 使用到普通字符,需要加一个转义符 
    119 res = r"^[a-zA-Z0-9_-]+@[a-zA-Z0-9]+(.[a-zA-Z0-9]+)+$"
    120 
    121 for e in email:
    122    ret = re.match(res, e)
    123    if ret:
    124       print("%s 是合法的邮箱地址" % ret.group())
    125 
    126 匹配分组
    127 
    128 import re
    129 
    130 email = [
    131    'ronle@163.com',
    132 ]
    133 
    134 # 匹配分组只通过163 126信箱
    135 res = r"^([a-zA-Z0-9_-]+)@(163|126)+(.[a-zA-Z0-9]+)+$"
    136 
    137 for e in email:
    138    ret = re.match(res, e)
    139    if ret:
    140       # 取出分组group(1)匹配 ronle
    141       print("%s 是用户名" % ret.group(1))
    142       # 取出分组group(2)匹配 163
    143       print("%s 是合法的邮箱地址" % ret.group(2))
    144 
    145 
    146 import re
    147 
    148 html_str = "<p>hello</p>"
    149 html_str2 = "<body><p>hello</p></body>"
    150 
    151 # 1 等值于分组(w*) 转换下就是 <w*>.*</w*>
    152 res = r"<(w*)>.*</1>"
    153 res2 = r"<(w*)><(w*).*</2></1>"
    154 
    155 ret = re.match(res, html_str)
    156 ret2 = re.match(res2, html_str2)
    157 print(ret.group())
    158 print(ret2.group())
    159 
    160 分组别名 (给分组定义个变量)
    161 
    162 import re
    163 
    164 html_str = "<body><p>hello</p></body>"
    165 res = r"<(?P<p1>w*)><(?P<p2>w*).*</(?P=p2)></(?P=p1)>"
    166 
    167 ret = re.match(res, html_str)
    168 
    169 print(ret.group())
    170 
    171 search  findall sub
    172 
    173 import re
    174 
    175 # 查找
    176 ret = re.search(r"d+", "下阅读量9999")
    177 print(ret.group())  # 9999
    178 
    179 # 查找全部
    180 ret = re.findall(r"d+", "阅读量9999,下载量9123")
    181 print(ret)  # ['9999', '9123']
    182 
    183 # 替换
    184 ret = re.sub(r"d+", "777", "阅读量9999,下载量9123")
    185 print(ret)  # 阅读量777,下载量777
    186 
    187 
    188 支持函数替换
    189 
    190 def add_num(temp):
    191    num = temp.group()
    192    result = int(num) + 1
    193    return str(result)
    194 
    195 
    196 # 替换
    197 ret = re.sub(r"d+", add_num, "阅读量9999,下载量9123")
    198 print(ret)  # 阅读量10000,下载量9124
    199 
    200 # 切割
    201 ret = re.split(r":| ", "name:cheng beyond")
    202 print(ret)  # ['name', 'cheng', 'beyond']
    import re
    
    a = """
    <link title="RSS" type="application/rss+xml" rel="alternate" href="https://www.cnblogs.com/ronle/rss"/> 
    """
    ret = re.findall('link title="RSS" type="(.+?)" rel', a, re.S)
    print(ret)  # ['application/rss+xml']
        let reg = /link title="RSS" type="(.+?)" rel/gi
        let str = '<link title="RSS" type="application/rss+xml" rel="alternate" href="https://www.cnblogs.com/ronle/rss"/>'
        let n = reg.exec(str)
        console.log(n)
  • 相关阅读:
    docker搭建mongodb
    mongodb的搭建
    Mysql错误:Ignoring query to other database解决方法
    BZOJ4567:[SCOI2016]背单词——题解
    BZOJ4570:[SCOI2016]妖怪——题解
    BZOJ4753:[JSOI2016]最佳团体——题解
    BZOJ1853:[SCOI2010]幸运数字 & BZOJ2393:Cirno的完美算数教室——题解
    LOJ6388:[THUPC2018]赛艇——题解
    BZOJ5217:[Lydsy2017省队十连测]航海舰队——题解
    BZOJ4259:残缺的字符串——题解
  • 原文地址:https://www.cnblogs.com/ronle/p/10070565.html
Copyright © 2020-2023  润新知