在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相关推荐

  1. iOS数据搜索技巧之【利用正则表达式进行匹配查找数据 】1、使用正则表达式对聊天记录的关键词进行监控 2、NSPredicate在正则表达式的应用

    文章目录 引言 I.[使用正则表达式对聊天记录的关键词进行监控] II iOS Predicate Format String Syntax [NSPredicate在正则表达式的应用] III 知识 ...

  2. Android中利用正则表达式验证手机号是否合法

    利用正则表达式来验证手机号是否合法,现在我们简单使用一下,这个在实际的应用中很实用. 例:在输入框中输入手机号,判断是否合法, MainActivity中: package com.example.m ...

  3. linux正则匹配8位数字日期,正则表达式之匹配数字范围,正则表达式匹配数字

    正则表达式之匹配数字范围,正则表达式匹配数字 最近有个需求就是根据产品编号批量下架产品,需要下架日期为16-31号之间的产品, 比如编号为B201607280023匹配表达式如下: ^201607(1 ...

  4. php 匹配图片加上域名,20170321_正则表达式:匹配图片地址,添加域名

    20170321_正则表达式:匹配图片地址,添加域名 // 匹配图片地址,添加域名 $suffix = env('PCURL').'Public/'; $pregRule = "//&quo ...

  5. 掐头去尾-利用正则表达式的匹配顺序

    首先推荐一个在线测试正则表达式的网址:http://tool.oschina.net/regex 本文测试环境基于HTML5和JavaScript(JS) 使用正则表达式处理一个字符串时,如果只匹配一 ...

  6. 匹配表情emoji 正则_ruby中的一个示例正则表达式将匹配任何表情符号?

    这个正则表达式匹配所有845表情符号,取自 Emoji unicode characters for use on the web: [\u{203C}\u{2049}\u{20E3}\u{2122} ...

  7. C#后台利用正则表达式查找匹配字符

    /// <summary>         /// 发送短信 系统固化短信         /// </summary>         /// <param name= ...

  8. php省市区筛选,PHP利用正则表达式匹配省市区

    这次给大家带来PHP利用正则表达式匹配省市区,PHP利用正则表达式匹配省市区的注意事项有哪些,下面就是实战案例,一起来看一下.preg_match('/(.*?(省|自治区|北京市|天津市))+(.* ...

  9. Nginx正则表达式之匹配操作符详解

    2019独角兽企业重金招聘Python工程师标准>>> Nginx正则表达式之匹配操作符详解 nginx可以在配置文件中对某些内置变量进行判断,从而实现某些功能.例如:防止rewri ...

最新文章

  1. java分布式锁终极解决方案之 redisson
  2. 机器学习系列19:将核函数应用于支持向量机
  3. NetLink Communication Mechanism And Netlink Sourcecode Analysis
  4. USACO1.4 The Clocks(clocks)
  5. Android 用虹软SDK做人脸识别
  6. 查看进程占用,并kill掉
  7. ubuntu1404_server搭建lamp
  8. how tomcat works 读书笔记(一)----------一个简单的webserver
  9. MobileNet-SSD网络解析
  10. 介绍7个适合普通大学生参加的编程比赛/考试(注:有的比赛如蓝桥杯有多种赛别,本文仅介绍其中的程序设计/编程比赛)
  11. linux启动tomcat后,浏览器访问不到
  12. matlab 计算一元函数解,遗传算法简单一元函数优化实例
  13. python词频统计_用Python实现一个词频统计(词云+图)
  14. android蓝牙开启的通知,在Android(蓝牙低功耗)中启用蓝牙特性通知不起作用
  15. 科研入门必备知识之论文种类--Journal、magazine、transactions、proceedings
  16. 理财基金国瀚实业公司理财:不懂理财知识如何做好投资
  17. “2021流行趋势发布·新品试骑活动”引爆羊城
  18. 关于学校订单班的那些事
  19. 几个学习软件测试的网站
  20. Python配置新环境时,复制已经安装好虚拟环境的三种方法

热门文章

  1. kubeadm搭建k8s集群实践
  2. 数据结构各章考研习题重点总结
  3. maxwell如何计算热损
  4. GCN的邻接矩阵归一化为什么能解决梯度消失和梯度爆炸
  5. android开机自启
  6. Adobe Photoshop CC 2019画板背景色白底如何去掉?
  7. Ubuntu创建文件并在文件末尾添加内容
  8. VUE项目运行常用命令
  9. stm32 CubeMX配置按键开关灯
  10. 松隆子 ほんとの気持ち 歌词