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         }
  • 相关阅读:
    Windows下压缩成tar.gz格式
    mysql 创建索引和删除索引
    jQuery鼠标事件
    MySql like模糊查询使用详解
    eclipse不能更改设置tomcat 中的ServerLocation问题
    eclipse安装tomcate插件步骤
    php折线图 布局图
    mysql 存储过程详解 存储过程
    解决Toad for Oracle显示乱码问题
    Readings in Databases
  • 原文地址:https://www.cnblogs.com/geyifan/p/3548687.html
Copyright © 2011-2022 走看看