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         }
  • 相关阅读:
    cookie、 Session Storage 、 Local Storage
    json 常用的方法
    ssm 框架 使用ajax异步,实现登陆
    ssm框架整合,配置文件中的配置内容
    ipv4和ipv6的区别
    分析域名的解析过程
    网络体系结构总结
    线程同步和异步
    博客目录
    [STM32H743]按键控制LED
  • 原文地址:https://www.cnblogs.com/geyifan/p/3548687.html
Copyright © 2011-2022 走看看