zoukankan      html  css  js  c++  java
  • 正则表达式边用边学(一)——分组、捕获

    近来对正则表达式有了浓厚的兴趣,索性加上先前模糊的记忆来次练习,在使用中学习.

    1.问题

    将url为"http://user:pass@api.data.sina.com.cn:80/about-me/afb/afc/service.cgi?t=100102&a=123#hash"按照协议,域名,路径,文件,参数,片段进行匹配.

    2.分析

    在这里先介绍一下分组的意义,取多组数据时,可以使用()进行分组,在java中匹配可以通过group(序号)来进行匹配.jdk7中已经增加了通过组命名的方式来匹配,之前的版本还不支持.

    先考虑一下如何匹配http这个协议,可以通过

    1 ^([^:]+)://

    来匹配,^表示非,非:的多个字符,后面跟着://

    ^([^:]+)://(?:([^:@]+):?([^@]+)@)?([^:/?]+):?(\d*)?/(.*)/([^\?#]+)\??([^#]+)#?(.*)$

    这样可以通过java中的api输出

     1      String url = "http://user:pass@api.data.sina.com.cn:80/about-me/afb/afc/service.cgi?t=100102&a=123#hash";
     2         Pattern p = Pattern.compile("^([^:]+)://(?:([^:@]+):?([^@]+)@)?([^:/?]+):?(\d*)?/(.*)/([^\?#]+)\??([^#]+)#?(.*)$");
     3         Matcher m = p.matcher(url);
     4         if (m.find()) {
     5             System.out.println(m.group(1));
     6             System.out.println(m.group(2));
     7             System.out.println(m.group(3));
     8             System.out.println(m.group(4));
     9             System.out.println(m.group(5));
    10             System.out.println(m.group(6));
    11             System.out.println(m.group(7));
    12             System.out.println(m.group(8));
    13             System.out.println(m.group(9));
    14         }
  • 相关阅读:
    flask数据库
    python 百万级别类实例实现节省内存
    python定义一种新类型的元组
    python使用临时文件
    open函数 文件设置缓冲
    词频统计,字典成绩排序
    列表数组集合解析
    2019蓝桥杯Java第十题大学生B组——最短路径思想
    项目企业信息图谱分析有感——数据分析
    需求分析有感
  • 原文地址:https://www.cnblogs.com/geyifan/p/3548687.html
Copyright © 2011-2022 走看看