正则表达式拆分url实例代码


Posted in Java/Android onFebruary 24, 2022

背景

做web开发的同学,经常会有从url中获取二级域名或者主域名或者参数等等需求,需要扎实的正则功底。本文提供一个全面的url拆分案例,需要哪个部分用哪个部分。

案例

将url的各个部分拆开,让我想取哪部分就取哪部分?

url: http://www.baidu.com/love/java?lang=java
regex: (\w+):\/\/([^/:]+)(:\d*)?([^# ]*)

使用js举例

var url = "http://www.baidu.com:80/love/java?lang=java";
var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
arr = url.match(patt1);
for (var i = 0; i < arr.length ; i++) {
    document.write(arr[i]);
    document.write("<br>");
}

输出结果如下:

http://www.baidu.com:80/love/java?lang=java
http
www.baidu.com
:80
/love/java?lang=java

使用java举例

String url = "http://www.baidu.com:80/love/java?lang=java";
        Pattern pattern = Pattern.compile("(\\w+):\\/\\/([^/:]+)(:\\d*)?([^# ]*)");
        Matcher matcher = pattern.matcher(url);
        matcher.find();
        for (int i = 1; i <= matcher.groupCount(); i++){
            System.out.println(matcher.group(i));
        }

输出结果:

http
www.baidu.com
:80
/love/java?lang=java

正则说明

实例中的数组包含 5 个元素,索引 0 对应的是整个字符串,索引 1 对应第一个匹配符(括号内),以此类推。

第一个括号子表达式捕获 Web 地址的协议部分。该子表达式匹配在冒号和两个正斜杠前面的任何单词。

第二个括号子表达式捕获地址的域地址部分。子表达式匹配非 : 和 / 之后的一个或多个字符。

第三个括号子表达式捕获端口号(如果指定了的话)。该子表达式匹配冒号后面的零个或多个数字。只能重复一次该子表达式。

第四个括号子表达式捕获 Web 地址指定的路径和 / 或页信息。该子表达式能匹配不包括 # 或空格字符的任何字符序列。

总结

到此这篇关于正则表达式拆分url的文章就介绍到这了,更多相关正则表达式拆分url内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
Java Dubbo框架知识点梳理
Jun 26 Java/Android
如何给HttpServletRequest增加消息头
Jun 30 Java/Android
关于springboot 配置date字段返回时间戳的问题
Jul 25 Java/Android
Java反应式框架Reactor中的Mono和Flux
Jul 25 Java/Android
Java生成日期时间存入Mysql数据库的实现方法
Mar 03 Java/Android
关于EntityWrapper的in用法
Mar 22 Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 Java/Android
JAVA 线程池(池化技术)的实现原理
Apr 28 Java/Android
Java版 简易五子棋小游戏
May 04 Java/Android
利用正则表达式匹配浮点型数据
May 30 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
Spring Boot 的创建和运行示例代码详解
Jul 23 Java/Android
mybatis源码解读之executor包语句处理功能
Feb 15 #Java/Android
java executor包参数处理功能 
Feb 15 #Java/Android
Java如何实现通过键盘输入一个数组
Feb 15 #Java/Android
Java实现给Word文件添加文字水印
Feb 15 #Java/Android
SSM项目使用拦截器实现登录验证功能
Jan 22 #Java/Android
利用Sharding-Jdbc进行分库分表的操作代码
关于MybatisPlus配置双数据库驱动连接数据库问题
Jan 22 #Java/Android
You might like
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
js post方式传递提交的实现代码
2010/05/31 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
Python 实现简单的电话本功能
2015/08/09 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
python tkinter组件摆放方式详解
2019/09/16 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
护士的岗位职责
2013/12/04 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
交通事故被告代理词
2015/05/23 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
2015国庆节感想
2015/08/04 职场文书
python - timeit 时间模块
2021/04/06 Python