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         }
  • 相关阅读:
    极致:互联网时代的产品设计
    赋能
    从历史看管理
    格调
    @Value注解没有起作用的梳理
    装系统------- 了解常用的启动方式以及如何进入bios
    装系统 ------ 使用微PE 做系统盘
    eclipse ------------- 安装maven ,配置setting文件
    Maven ------ 了解与安装
    sqlException 使用relace 替换单引号
  • 原文地址:https://www.cnblogs.com/geyifan/p/3548687.html
Copyright © 2011-2022 走看看