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         }
  • 相关阅读:
    第四周作业
    第三周作业
    第二周作业
    互联网公司采用增量模型做开发的优势
    面向过程分析方法与面向对象分析方法到底区别
    项目测试中的黑盒测试和白盒测试
    立项说明书里面的项目概述。
    项目开发中的一些问题
    面向对象之我见
    [自翻]fasthttp中文文档(持续更新)
  • 原文地址:https://www.cnblogs.com/geyifan/p/3548687.html
Copyright © 2011-2022 走看看