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

      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)
  • 相关阅读:
    sql2slack alash3al 开源的又个轻量级工具
    pgspider fetchq 扩展docker镜像
    godns 集成coredns 的demo
    godns 简单dnsmasq 的dns 替换方案
    aviary.sh 一个基于bash的分布式配置管理工具
    使用coredns 的template plugin实现一个xip 服务
    nginx 代理 coredns dns 服务
    基于nginx proxy dns server
    几个不错的geodns server
    spring boot rest api 最好添加servlet.context-path
  • 原文地址:https://www.cnblogs.com/ronle/p/10070565.html
Copyright © 2011-2022 走看看