zoukankan      html  css  js  c++  java
  • 书到用时方恨少-- 正则,待修

    最近的正则表达式用的,讲真的真是一言难尽啊。想要好好整理一下。待修

    呃 首先呢,什么是re呢?

     re 是 Regular Expression的简称  换言之就是可以用re来表示正则表达式。

    基础篇:

    print(re.findall("w","1。ab,e《g——g_g"))#匹配数字字母下划线
    print(re.findall("W","*;56。.,"))#匹配非数字字母下划线
    print(re.findall("s"," f"))#匹配任意空白字符
    print(re.findall("S"," f"))#匹配任意非空白字符
    print(re.findall("d","123**"))#匹配任意的数字
    print(re.findall("D","123**"))#匹配任意的非数字
    print(re.findall("Ad","123* bc"))#从字符串开始处匹配(取一个)
    print(re.findall("d","123abc*9 "))#从字符串结束处匹配 注意把写在表达式右边(取一个)
    print(re.findall("^d","123* bc"))#从字符串开始处匹配
    print(re.findall("d$","123*39"))#匹配字符串尾部
    print(re.findall(" "," 9999n"))#匹配
    print(re.findall(" "," 999 9n"))#匹配
    print(re.findall("^d","1 9999n"))#从字符开始匹配数字

    范围匹配:

    print(re.findall("[abc]","AaBbc"))#匹配a-c
    print(re.findall("[^abc]","AaBbc"))#匹配非a-c
    print(re.findall("[0-7]","A8953aBbc"))#匹配数字0-7
    print(re.findall("[A-z]","AaBbc"))#匹配A-z

    重复匹配:

    print(re.findall("[A-Za-z]","123*
     a  f g bc"))#从字符串开始处匹配,[]范围匹配 中间用 - 来连接
    #如果要匹配符号-要写正在字符表达式左边或右边
    print(re.findall("[Za-]","123* a f g bc"))
    #重复匹配 表达式来怕匹配次数得到
    # + * 贪婪匹配,表达式匹配尽可能多拿(一直匹配 直到不满足为止)
    # * 表示任意次数 所以0次也满足
    print(re.findall("[A-Za-z]*","123* a f g lll bc"))
    # + 表示一次或多次
    print(re.findall("[A-Za-z]+","123* a f g lll bc"))
    #从全文范围取一个
    print(re.search("([a-zA-Z]+)(_dsb)","xsdasf sddf_dsb ljkkl_dsb dagsgfgf"))
    #从开始的位置开始匹配
    print(re.match("([a-zA-Z]+)(_dsb)","xsdasf sddf_dsb ljkkl_dsb dagsgfgf"))
    #将正则表达式 编译成一个对象 往后可以不用再写表达式 直接开始匹配
    print(re.compile("w*").findall("abcdef"))

    非贪婪匹配&贪婪匹配:

    # ? 表示0次或1次
    print(re.findall("[A-Za-z]?","123* a f g lll bc"))

    #自定义匹配次数{1,}1到无穷 {,1}0到1
    print(re.findall("[A-Za-z]{1,9}","123* a f g lll bc afsagsd"))

    #分组 加上分组 不会改变原来的规则 仅仅是将括号中的内容取出来
    print(re.findall("([A-Za-z]+)_dsb","egon_dsb exyx_dsb yyy_xxk"))
    #定义text网址。。。演示贪婪匹配
    text="""<img src="https://ss1.baidu.comaaaasdffghjkhgfdsaasdf"adfsgahghg>"""
    print(re.findall('src="http.*"',text))

    #非贪婪匹配 再表达式后面加上?
    print(re.findall('src="http.*?"',text))

    #取出指定內容後面的信息
    print(re.findall(r'token=(.S+)', token_text))

    替换:

    print(re.sub("python","PYTHON","js|python|java")) #用PYTHON替换python

    #用正则表达式来替换位置
    text="java|C++|js|C|python"
    pattern="(.+?)(|.+)(.+)"
    # print(re.search(pattern,text).group())
    #手机号验证
    # print(re.match("1[0-9]{10}$","15383880339"))
    print(re.match("[0-9]{10}$","15383880339"))
  • 相关阅读:
    HDU ACM 1392 Surround the Trees-&gt;凸包
    JMeter使用记录1 -- JDBC測试
    Html学习笔记4
    c++使用mysql的api连接相关问题
    [Angularjs]ng-select和ng-options
    mysql之字符串操作
    mysql之日期函数
    [sharepoint]Rest api相关知识(转)
    [工具类]泛型集合转换为DataTable
    C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
  • 原文地址:https://www.cnblogs.com/yanhui1995/p/10791684.html
Copyright © 2011-2022 走看看