zoukankan      html  css  js  c++  java
  • 正则题--什么时候才能到200+

    1、匹配一行文字中的所有开头的字母内容
    >>> re.findall(r"^[a-zA-Z]+","a B 1 x ",re.M)
    ['a', 'B', 'x']
    >>> re.findall(r"^[a-z]+","a b 1 2 x ",re.M)

    ['a', 'b', 'x']

    >>> re.findall(r"^[a-z]+","axx bee2 1222xxx 2xxx xxx3312xx ",re.M)

    ['axx', 'bee', 'xxx']


    2、匹配一行文字中的所有开头的数字内容
    >>> re.findall(r"^d+","a 3 B 1 x ",re.M)
    ['3', '1']
    >>> re.findall(r"^[0-9]+","a 3 B 1 x ",re.M)
    ['3', '1']


    3、匹配一行文字中的所有开头的数字内容或数字内容
    >>> re.findall(r"^w+","a 3 B 1 x ",re.M)
    ['a', '3', 'B', '1', 'x']
    >>> re.findall(r"^[a-zA-Z0-9]+","a 3 B 1 x ",re.M)
    ['a', '3', 'B', '1', 'x']


    4、 只匹配包含字母和数字的行
    >>> re.findall(r"[a-zA-Z0-9]+","2b3a 3 B 1 x ",re.M)
    ['2b3a', '3', 'B', '1', 'x']
    >>> re.findall(r"w+","a 3kl4 aB 1 x ",re.M)
    ['a', '3kl4', 'aB', '1', 'x']


    5、写一个正则表达式,使其能同时识别下面所有的字符串:'bat',
    'bit', 'but', 'hat', 'hit', 'hut‘
    >>> re.findall(r"b.t|h.t","bat bit but hat hit hut ",re.M)
    ['bat', 'bit', 'but', 'hat', 'hit', 'hut']


    6、匹配所有合法的python标识符
    在python里,标识符有字母、数字、下划线组成。
    >>> re.findall(r"w|_+","a 3kl4 _ aB 1 x ",re.M)
    ['a', '3', 'k', 'l', '4', '_', 'a', 'B', '1', 'x']


    7、提取每行中完整的年月日和时间字段
    >>> re.findall(r"d+","2019-04-16 11:32")
    ['2019', '04', '16', '11', '32']
    >>> re.findall(r"d+","2019-04-16 11:32 2019-04-15 12:00 ",re.M)
    ['2019', '04', '16', '11', '32', '2019', '04', '15', '12', '00']
    >>> re.findall(r"(d+-d+)","2019-04-16 11:32:26")
    ['2019-04']
    >>> re.findall(r"(d+-d+-d+)","2019-04-16 11:32:26")
    ['2019-04-16']
    >>> re.findall(r"(d+-d+-d+) (d+):","2019-04-16 11:32:26")
    [('2019-04-16', '11')]
    >>> re.findall(r"(d+-d+-d+) (d+):(d+)","2019-04-16 11:32:26")
    [('2019-04-16', '11', '32')]
    >>> re.findall(r"(d+-d+-d+) (d+):(d+):(d+)","2019-04-16 11:32:26")
    [('2019-04-16', '11', '32', '26')]
    >>> re.findall(r"d+-d+-d+ d+:d+:d+","2019-04-16 11:32:26")
    ['2019-04-16 11:32:26']
    AttributeError: 'list' object has no attribute 'group'
    >>> re.search(r"d+-d+-d+ d+:d+:d+","2019-04-16 11:32:26").group()
    '2019-04-16 11:32:26'


    8、将每行中的电子邮件地址替换为你自己的电子邮件地址
    >>> re.findall(r'w+@w+.com|cn','mail:465@qq.com')
    ['465@qq.com']
    >>> re.sub(r'w+@w+.com|cn','XXXX@163.com','465@qq.com')
    'XXXX@163.com'


    9、匹配home关键字:
    >>> re.search(r'(\home)','fewwkhome32').group()
    '\home'
    >>> print(re.search(r'(\home)','fewwkhome32').group())
    home
    >>> s ="dhome3fehomed home "
    >>> for i in re.findall(r'\home',s):
    ... print(i)
    ...
    home
    home
    home


    进阶练习
    1、使用正则提取出字符串中的单词
    >>> s= 'I am a good boy!'
    >>> re.findall(r'w+',s)
    ['I', 'am', 'a', 'good', 'boy']
    >>> s= 'I am a 12 years old boy!'#字符串中包含数字和字母的情况
    >>> re.findall(r'[a-zA-Z]+',s)
    ['I', 'am', 'a', 'years', 'old', 'boy']


    2、使用正则表达式匹配合法的邮件地址:

    import re
    re_email = re.compile(r'^[a-zA-Z.]+@[a-zA-Z0-9]+.[a-zA-Z]{3}$')
    def is_valid_email(addr):
        if re_email.match(addr):
            print("True")
            m = re.match(r'^([a-zA-Z.0-9]+)@[a-zA-Z0-9]+.[a-zA-Z]{3}$',addr)
            print(m.group(1))
    
        else :
            print('False')
    
    is_valid_email('someone@gmail.com')

    3、国际域名格式如下:
    域名由各国文字的特定字符集、英文字母、数字及“-”(即连字符或减号)任意组
    合而成, 但开头及结尾均不能含有“-”,“-”不能连续出现。域名中字母不分大
    小写。域名最长可达60个字节(包括后缀.com、.net、.org等)。
    import re

    print(re.search(r"^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,4}$","a32b@qq.com").group())


    4、提取字符串中合法的超链接地址
    比如:s = '<a href="http://www.gloryroad.cn">光荣之路官网</a>'
    要求,给出的正则表达式能兼顾所有链接地址。
    >>> re.findall(r'http://w+.',s)
    ['http://www.']
    >>> re.findall(r'http://w+.w+',s)
    ['http://www.gloryroad']
    >>> re.findall(r'http://w+.w+.',s)
    ['http://www.gloryroad.']
    >>> re.findall(r'http://w+.w+.w+',s)
    ['http://www.gloryroad.cn']
    >>> re.findall(r'http[s]{0,1}://w+.w+.w+',s)
    ['http://www.gloryroad.cn']


    5、统计文件中单词个数
    >>> s="I am a good boy!"
    >>> re.findall(r"w+",s)
    ['I', 'am', 'a', 'good', 'boy']
    >>> len(re.findall(r"w+",s))
    5


    6、写一个函数,其中用正则验证密码的强度
    密码字符包括:小写字母、大写字母、数字、符号
    >>> re.search(r"^(?:([a-z])|([A-Z])|([0-9])|(.)){6,}|(.)+$","^ 8SA&kkk").group()

    '^ 8SA&kkk'

    7、匹配ip的正则表达式:
    >>> re.search(r'^(([1-9]|[1-9]d|1dd|2[0-4]d|25[0-5]).){3}([1-9]|[1-9]d|1d
    d|2[0-4]d|25[0-5])$',"192.168.133.4").group()
    '192.168.133.4'

  • 相关阅读:
    闭包
    函数的嵌套和作用域链
    函数命名空间
    初识函数
    快捷键
    centos7 配置远程ssl证书访问docker
    centos 7 修改主机名称hostname
    centos7 在docker中安装gocron
    centos7 在docker中安装mongodb
    centos7 在docker中安装redis
  • 原文地址:https://www.cnblogs.com/wenm1128/p/10716606.html
Copyright © 2011-2022 走看看