正则表达式

import re

Python语言默认是贪婪的,但其他语言并不一定是贪婪的 # 想要得到正则匹配后的值需要用 group()获取,但是一定要判断是否取到值,否则会抛异常如果有多个()的话,需要用group(n)来取值 *****
# 在有固定长度的的表达式匹配时,一定要加开始和结尾的标识符 ***** # 所有的量词都要用在正则规则匹配的后面 ***** # [a-z]\d+ ->a123456889...... # [a-z]+\d+ ->fdaf...1245687665... """   re.I 忽略大小写   re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境   re.M 多行模式   re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)   re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库   re.X 为了增加可读性,忽略空格和 # 后面的注释 """ result = "AB1253C45b67 89a5 \ndsflghjkl" # re.match(r"regular expression ","需要匹配的内容") #从左到右匹配只取第一个相当与 '^'
print(re.match(r".*", result,re.S)) #S 忽略\n
print(re.match(r"[A-z]+", result))
print(re.match(r"[0-9]", result)) # re.findall(r"regular expression","需要匹配的内容") #从头到尾都匹配只要匹配到,返回一个列表 print(re.findall(r".", result))
print(re.findall(r"[a-z]",result,re.IGNORECASE))
print(re.findall(r"[0-9]",result)) # re.search 扫描整个字符串并返回第一个成功的匹配 # re.search(r"regular expression","需要匹配的内容") #能够匹配包含xxx的字符串 左闭右开下标从0开始
ret = re.search(r"\d+", "阅读次数为 9999") #.group()取数据
print(ret)print(re.search(r".+", result))
print(re.search(r"[a-z]+", result))
print(re.search(r"\d+", result)) # re.sub() #将匹配到的数据进行替换 ret = re.sub(r"\d+", '998', "python = 997")
print(ret) # def add(temp):
  count_num = temp.group()

  result = int(count_num) + 1

  return str(result)

ret1 = re.sub(r"\d+", add, "python = 900")
ret2 = re.sub(r"\d+", add, "python = 99")
print(ret1)
print(ret2) # eg: str = """ <div>   <p>岗位职责:</p>   <p>完成推荐算法、数据统计、接口、后台等服务器端相关工作</p>   <p><br></p>   <p>必备要求:</p>   <p>良好的自我驱动力和职业素养,工作积极主动、结果导向</p>   <p>&nbsp;<br></p>   <p>技术要求:</p>   <p>1、一年以上 Python 开发经验,掌握面向对象分析和设计,了解设计模式</p>   <p>2、掌握HTTP协议,熟悉MVC、MVVM等概念以及相关WEB开发框架</p>   <p>3、掌握关系数据库开发设计,掌握 SQL,熟练使用 MySQL/PostgreSQL 中的一种<br></p>   <p>4、掌握NoSQL、MQ,熟练使用对应技术解决方案</p>   <p>5、熟悉 Javascript/CSS/HTML5,JQuery、React、Vue.js</p>   <p>&nbsp;<br></p>   <p>加分项:</p>   <p>大数据,数理统计,机器学习,sklearn,高性能,大并发。</p> </div> """ #data = re.sub(r"<[^>]*>|&nbsp;|\n",'',str)
data = re.sub(r"<[^>]+>|&nbsp;|\n","",str)
print(data) # re.split() #根据匹配进行切割字符串,并返回一个列表
ret = re.split(r":| ","info:xiaoZhang 33 shandong")
print(ret) # "."能匹配'\n'以外的所有字符 str1 = "a12345 6879.\nb" print(re.match(r"^.*", str1)) # "\d" digit 匹配数字 print(re.match(r"^\d", "12ad34")) # "w" word 能匹配单词字符和汉字 print(re.match(r"^\w", "一起去看看")) # "s" space 匹配任意的空白符 print(re.match(r"^\s*", " -b 12")) # "D" 匹配非数字 # "W" 能匹配非单词字符 # "S" 匹配非任意的空白符 # "\n" 匹配换行符 # "\t" 匹配制表符 # "\b" 匹配单词的结尾 # "^" 匹配开头 ->startwith 和"$"匹配结尾 ->endwith # "a|b" 或匹配 print(re.match(r"(db|abc)*", "abcdb")) # "()" 匹配括号内的表达式,俗称分组,需要对一个字符串进行整体讨论时,一般用分组 # "[ ]" 一个字符组只能匹配一个位置 # [^a-z] 除a-z的都匹配 # 量词 --> 坐标轴记忆法 # "*" 匹配0次或多次 贪婪匹配 # "+" 匹配1次或多次 贪婪匹配 # "?" 匹配0次或1次 非贪婪匹配 "^[0~9]{14}(\d{2}[0-9x])$" # "{n}" 重复n次 # "{n,}" 重复n次到无穷大 # "{m,n}" 重复m到n次(个)


#匹配标识符
import re
# 注意需求 一字一字看,认真看
# 匹配标识符
def main():
    all_str = ["args", "kwargs", "__nest__", "enumerate#%&", "yield1", "#12", "apply_async", "join", "join&", "1iter"]
    for str in all_str:
        # result = re.match(r"^[A-z_][A-z0-9_]*", str)
        result = re.match(r"^[A-z_][A-z0-9_]*$", str)
        if result:
            print("该变量%s符合变量的命名规则,通过正则匹配出来的结果是%s" % (str, result.group()))
        else:
            print("该变量%s不符合变量的命名规则" % (str))


if __name__ == '__main__':
    main()
View Code

#简单匹配163邮箱

  #万能匹配邮箱正则表达式

    /^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$/;

# 匹配邮箱
def main():
    content_email = input("请输入邮箱账号:")
    ret = re.match(r"^[A-z0-9_]+@163\.com",content_email)
    if ret:
        print("这个邮箱账号%s符合当前需求",content_email)
    else:
        print("这个邮箱账号%s不符合我们的需求",content_email)

if __name__ == '__main__':
    main()
View Code

#匹配手机号

# 总长11位,首号必须为1,尾号不能是4/7
# 匹配手机号
def main():
    result = input("请输入一个手机号:")
    # ret = re.match(r"^[1]\d{9}[0-35689]$", result)
    # ret = re.match(r"^[1]\d{9}[^4]|[^7]$",result)
    # ret = re.match(r"^[1]\d{9}[^4]$|^[1]\d{9}[^7]$",result)
    # ret = re.match(r"^1[0123456789]{9}[0-35689]$", resrult)
    ret = re.match(r"^[1]\d{9}([^4]|[^7])$", result)
    if ret:
        print("该手机号%s符合要求", result)
    else:
        print("该手机号%s不符合要求", result)


if __name__ == '__main__':
    main(
View Code

 

 

 

posted @ 2018-12-06 12:52  随性岁分享  阅读(157)  评论(0编辑  收藏  举报