正则匹配url android,Android利用正则表达式如何匹配URL
在Android项目中遇到一个问题,需求是需要获取浏览器分享出来的内容中的URL。
正常情况下分享出来的URL信息是包含在Bundle的intent.EXTRA_TEXT字段中的,而Tittle信息一般放在intent.EXTRA_SUBJECT字段中的,但是有的浏览器没有提供intent.EXTRA_SUBJECT字段,而是直接将URL和Tittle信息直接放在intent.EXTRA_TEXT字段中,所以我们得解析intent.EXTRA_TEXT字段,通过正则表达式获取URL,查找相关资料后发现一个比较好用的正则表达式:
((http|ftp|https)://)(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\\&%_\\./-~-]*)?
直接给出匹配的代码方法吧
/**
* //获取完整的域名
*
* @param text 获取浏览器分享出来的text文本
*/
public static String getCompleteUrl(String text) {
Pattern p = Pattern.compile("((http|ftp|https)://)(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\\&%_\\./-~-]*)?", Pattern.CASE_INSENSITIVE);
Matcher matcher = p.matcher(text);
matcher.find();
return matcher.group();
}
顺便给出Android这边获取浏览器分享网页的网页Tittle 和 URL 方法吧
/**
* 返回获取的url和tittle信息
*
* @param intent
* @return
*/
public static Map getContent(Intent intent) {
String urlStr = "";
String titleStr = "";
Map shareContent = new HashMap<>();
String text = intent.getExtras().getString(intent.EXTRA_TEXT);
String subject = intent.getExtras().getString(intent.EXTRA_SUBJECT);
if (text != null && subject != null) {
urlStr = getCompleteUrl(text);
titleStr = subject;
} else if (text != null && subject == null) {
urlStr = getCompleteUrl(text);
titleStr = text.replace(urlStr, "");
} else if (text == null && subject == null) {
return null;
}
shareContent.put("tittle", titleStr);
shareContent.put("url", urlStr);
return shareContent;
}
最后的最后
第一次用简书写博客,感觉棒棒哒 .......
正则匹配url android,Android利用正则表达式如何匹配URL相关推荐
- iOS数据搜索技巧之【利用正则表达式进行匹配查找数据 】1、使用正则表达式对聊天记录的关键词进行监控 2、NSPredicate在正则表达式的应用
文章目录 引言 I.[使用正则表达式对聊天记录的关键词进行监控] II iOS Predicate Format String Syntax [NSPredicate在正则表达式的应用] III 知识 ...
- Android中利用正则表达式验证手机号是否合法
利用正则表达式来验证手机号是否合法,现在我们简单使用一下,这个在实际的应用中很实用. 例:在输入框中输入手机号,判断是否合法, MainActivity中: package com.example.m ...
- linux正则匹配8位数字日期,正则表达式之匹配数字范围,正则表达式匹配数字
正则表达式之匹配数字范围,正则表达式匹配数字 最近有个需求就是根据产品编号批量下架产品,需要下架日期为16-31号之间的产品, 比如编号为B201607280023匹配表达式如下: ^201607(1 ...
- php 匹配图片加上域名,20170321_正则表达式:匹配图片地址,添加域名
20170321_正则表达式:匹配图片地址,添加域名 // 匹配图片地址,添加域名 $suffix = env('PCURL').'Public/'; $pregRule = "//&quo ...
- 掐头去尾-利用正则表达式的匹配顺序
首先推荐一个在线测试正则表达式的网址:http://tool.oschina.net/regex 本文测试环境基于HTML5和JavaScript(JS) 使用正则表达式处理一个字符串时,如果只匹配一 ...
- 匹配表情emoji 正则_ruby中的一个示例正则表达式将匹配任何表情符号?
这个正则表达式匹配所有845表情符号,取自 Emoji unicode characters for use on the web: [\u{203C}\u{2049}\u{20E3}\u{2122} ...
- C#后台利用正则表达式查找匹配字符
/// <summary> /// 发送短信 系统固化短信 /// </summary> /// <param name= ...
- php省市区筛选,PHP利用正则表达式匹配省市区
这次给大家带来PHP利用正则表达式匹配省市区,PHP利用正则表达式匹配省市区的注意事项有哪些,下面就是实战案例,一起来看一下.preg_match('/(.*?(省|自治区|北京市|天津市))+(.* ...
- Nginx正则表达式之匹配操作符详解
2019独角兽企业重金招聘Python工程师标准>>> Nginx正则表达式之匹配操作符详解 nginx可以在配置文件中对某些内置变量进行判断,从而实现某些功能.例如:防止rewri ...
最新文章
- java分布式锁终极解决方案之 redisson
- 机器学习系列19:将核函数应用于支持向量机
- NetLink Communication Mechanism And Netlink Sourcecode Analysis
- USACO1.4 The Clocks(clocks)
- Android 用虹软SDK做人脸识别
- 查看进程占用,并kill掉
- ubuntu1404_server搭建lamp
- how tomcat works 读书笔记(一)----------一个简单的webserver
- MobileNet-SSD网络解析
- 介绍7个适合普通大学生参加的编程比赛/考试(注:有的比赛如蓝桥杯有多种赛别,本文仅介绍其中的程序设计/编程比赛)
- linux启动tomcat后,浏览器访问不到
- matlab 计算一元函数解,遗传算法简单一元函数优化实例
- python词频统计_用Python实现一个词频统计(词云+图)
- android蓝牙开启的通知,在Android(蓝牙低功耗)中启用蓝牙特性通知不起作用
- 科研入门必备知识之论文种类--Journal、magazine、transactions、proceedings
- 理财基金国瀚实业公司理财:不懂理财知识如何做好投资
- “2021流行趋势发布·新品试骑活动”引爆羊城
- 关于学校订单班的那些事
- 几个学习软件测试的网站
- Python配置新环境时,复制已经安装好虚拟环境的三种方法