位置: IT常识 - 正文

刘亦菲生日当天,引发了我对正则的思考(刘亦菲生日当天发素颜照)

编辑:rootadmin
前两天从网上采集到一条短视频数据(刷短视频),发现六公主连排5部刘亦菲主演的电影!甚是震惊,太有牌面了,看了一下日子是8月25号,嗷,原来当天是刘亦菲的生日。巧了,正好也是我家柴犬旺财的3岁生日😀。 言归正传,我们看到这条数据的 标题:#刘亦菲35岁生日获央视独宠# 神仙姐姐生日快乐! 为了分析数 ...

推荐整理分享刘亦菲生日当天,引发了我对正则的思考(刘亦菲生日当天发素颜照),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:刘亦菲生日宴,刘亦菲生日会,刘亦菲的生日是哪天,刘亦菲生日无人祝福,刘亦菲生日谁送祝福了,刘亦菲生日谁送祝福了,刘亦菲生日当天发素颜照,刘亦菲生日当天发素颜照,内容如对您有帮助,希望把文章链接给更多的朋友!

前两天从网上采集到一条短视频数据(刷短视频),发现六公主连排5部刘亦菲主演的电影!甚是震惊,太有牌面了,看了一下日子是8月25号,嗷,原来当天是刘亦菲的生日。巧了,正好也是我家柴犬旺财的3岁生日?。

言归正传,我们看到这条数据的

标题:#刘亦菲35岁生日获央视独宠# 神仙姐姐生日快乐!

为了分析数据,我们需要获取数据中所提到的话题#刘亦菲35岁生日获央视独宠#。提问:你能想到几种实现方式呢?欢迎评论区留言。

正则

想必细心看标题的朋友一定会猜到本文的主人公——正则,这玩意优点是写起来快,但缺点也显而易见,性能差,跟批处理一个德性,反人类的难记,长时间不用,每次都要重新学习,日常开发中也就偶尔写工具用一下。因此,我们只需要把常用的正则理解透就可以了,不要有心理包袱,看完本文,大部分的正则使用场景就可以活学活用。

场景一:匹配两个#之间的字符串

现在我们把需求转换成实现思路,想要获取上述数据中的话题,其实就是匹配两个#之间的文本内容,show code:

正则表达式:#.*?#

public static void main(String[] args) { String title = "#刘亦菲35岁生日获央视独宠# 神仙姐姐生日快乐!"; Pattern p = Pattern.compile("(#.*?#)"); Matcher m = p.matcher(title); while (m.find()) { String group = m.group(0); System.out.println("话题:" + group); } }

输出

话题:#刘亦菲35岁生日获央视独宠#

可以看出,输出的结果就是该条数据的话题,给大家分析一下这个正则表达式:.表示任意字符,?平时表示匹配0个或者多个,此时它表示不贪婪,那什么是贪婪呢?

说到贪婪,那就不得不提这两个限定符:* 和 + ,它们两个就是贪婪的!*表示匹配0个或者多个,+表示匹配至少一个,可以发现它们的共性:都会尽可能匹配更多。但,只要紧跟在它们的后面加上一个 ? ,让他们扪心自问,就可以实现非贪婪,即最小匹配。比如,我们在标题上再加一个#,此时标题变为#刘亦菲35岁生日获央视独宠## 神仙姐姐生日快乐!,然后正则表达式我们不使用?,此时,运行代码后输出结果为:

话题:#刘亦菲35岁生日获央视独宠##刘亦菲生日当天,引发了我对正则的思考(刘亦菲生日当天发素颜照)

比较两次的执行结果,我们会发现输出结果多了一#,这样就很贪婪,违背了我们的初衷,这就是?的妙用。

场景二:只匹配#开头的字符串

我们知道不同平台的话题格式是不一样的,比如抖音,它的话题形式就与微博不同,只是#开头,并没有成对的#与其呼应:

标题:#刘亦菲35岁生日获央视独宠 神仙姐姐生日快乐!

如果是这种形式的话题,爱动脑筋的朋友就会发现无非就是将后面的#变为一个空格或者多个空格呗。没错,我们可以使用

正则表达式:#.*?\\s+

public static void main(String[] args) { String title = "#刘亦菲35岁生日获央视独宠 神仙姐姐生日快乐!"; Pattern p = Pattern.compile("(#.*?\\s+)"); Matcher m = p.matcher(title); while (m.find()) { String group = m.group(0); System.out.println("话题:" + group); } }

输出

话题:#刘亦菲35岁生日获央视独宠

Tips:\s 表示匹配所有空白符,它不仅仅可以匹配空格,还可以匹配换行等空白字符,如果再加上+,组合起来就表示甭管几个空白字符,统统all in。

不过,不要高兴得太早,心细的小明还发现话题可能会存在文末的情况:

标题:神仙姐姐生日快乐!#刘亦菲35岁生日获央视独宠

此时是没有空白字符结束的,上面的正则就不满足这种情况。那如何是好?小明当时就想到了两个方案:

方案一:不管话题在不在文末,我们在匹配之前全部给标题追加一个空白字符,这样就可以人为干预,巧妙地避开了这种情况,曲线救国,便于正则匹配方案二:使用正则表达式#.*?$

Tips:方案二中的$ 是用来匹配输入字符串的结尾位置,组合起来就表示匹配#开头,一直到句末的话题。

进阶

前面两种场景我们虽然获取到了两个#之间或者#开头的内容,实现了需求,但是匹配的结果还是会带上#,贪婪的小明不满足现状(产品强制要求),可不可以不带呢?当然可以了!小明又想到了两个方案:

方案一:得到匹配的话题后,再二次文本处理去掉#方案二:使用正则表达式?<=和?=一步到位,直接去除#

使用方法

(?<=exp2)exp1:表示匹配 exp2 后面的 exp1exp1(?=exp2):表示匹配 exp2 前面的 exp1那结合以上我们实际使用的所有场景,最终这个理想的正则表达式就正式出炉(好热):((?<=#).*?(?=#|\s+))反应慢的朋友,可以慢点理解,我们先运行试一下(不自信): public static void main(String[] args) { String title = "#刘亦菲# #神仙姐姐 #生日快乐# #刘亦菲35岁生日获央视独宠"; Pattern p = Pattern.compile("((?<=#).*?(?=#|\\s+|$))"); Matcher m = p.matcher(title); while (m.find()) { String group = m.group(0); System.out.println("话题:" + group); } }

输出

话题:刘亦菲话题:话题:神仙姐姐话题:生日快乐话题:话题:刘亦菲35岁生日获央视独宠

Tips:正则表达式中的|表示或,即多项之间的一个选择,就像今天你看完本文,感觉不错的话,必须做出(关注|点赞|星标)其中的一个选择!从代码的输出结果我们可以看出,目前的正则是经得住实际考验的。但是唯一美中不足的是,会有空字符串的情况出现(产品不同意)。这该如何是好?目前小明的解决方案是,拿到匹配结果时,过滤掉空字符串。能解决问题的办法就是好办法。不过,肯定有更完美的表达式可以实现这个需求,此处抛砖引玉,期待你在评论区分享!

常用的正则表达式分享微信号(并不能帮你要到男神|女神的微信号)^[a-zA-Z][a-zA-Z\d_-]{5,19}$

未完待续……

本文链接地址:https://www.jiuchutong.com/zhishi/310518.html 转载请保留说明!

上一篇:OpenGL ES 名词解释(二)(openglskia是什么意思)

下一篇:mysql使用union的注意点(mysql的union语句)

  • vivox70pro+充电多少瓦(vivox70pro充电多久)

    vivox70pro+充电多少瓦(vivox70pro充电多久)

  • oppo充电提示音怎么关闭?(oppo充电提示音能关掉吗)

    oppo充电提示音怎么关闭?(oppo充电提示音能关掉吗)

  • 荣耀手机如何设置导航三键(荣耀手机如何设置图标大小)

    荣耀手机如何设置导航三键(荣耀手机如何设置图标大小)

  • ios13qq音乐闪退(苹果用qq音乐自动退出怎么解决)

    ios13qq音乐闪退(苹果用qq音乐自动退出怎么解决)

  • 手环不能提示微信通话(我的手环接不到微信提醒)

    手环不能提示微信通话(我的手环接不到微信提醒)

  • 电脑文件怎么发送到微信(电脑文件怎么发送到qq邮箱)

    电脑文件怎么发送到微信(电脑文件怎么发送到qq邮箱)

  • 抖音有星号标志什么意思(抖音有星标好友吗)

    抖音有星号标志什么意思(抖音有星标好友吗)

  • 荣耀30有双扬声器吗(荣耀30双扬声器在哪个位置)

    荣耀30有双扬声器吗(荣耀30双扬声器在哪个位置)

  • 路由器无信号闪红是什么原因(路由器无信号闪烁红灯)

    路由器无信号闪红是什么原因(路由器无信号闪烁红灯)

  • 为什么有的航班不支持手机在线选座(为什么有的航班突然没了)

    为什么有的航班不支持手机在线选座(为什么有的航班突然没了)

  • 快手店铺订单为什么什么都看不到(快手里小店订单怎么什么都不显示了)

    快手店铺订单为什么什么都看不到(快手里小店订单怎么什么都不显示了)

  • 微信号登不上去里面的钱怎么办(微信号登不上去了怎么办)

    微信号登不上去里面的钱怎么办(微信号登不上去了怎么办)

  • 数据库系统的5个组成部分(数据库系统的5个组成部分和功能)

    数据库系统的5个组成部分(数据库系统的5个组成部分和功能)

  • 内存频率重要吗(内存频率重要吗知乎)

    内存频率重要吗(内存频率重要吗知乎)

  • 抖音取消请求对方知道吗(抖音取消请求关注还能收到消息吗)

    抖音取消请求对方知道吗(抖音取消请求关注还能收到消息吗)

  • 云闪付付款码多久失效(云闪付付款码多长时间有效)

    云闪付付款码多久失效(云闪付付款码多长时间有效)

  • iphone如何设置相册锁(Iphone如何设置相机像素)

    iphone如何设置相册锁(Iphone如何设置相机像素)

  • word封面目录怎么弄(word封面目录怎么创建)

    word封面目录怎么弄(word封面目录怎么创建)

  • 苹果怎么管理自动续费(苹果怎么管理自动扣费服务)

    苹果怎么管理自动续费(苹果怎么管理自动扣费服务)

  • p30流光快门怎么用(mate30流光快门)

    p30流光快门怎么用(mate30流光快门)

  • 小爱同学唤醒失灵(小爱同学唤醒不了了)

    小爱同学唤醒失灵(小爱同学唤醒不了了)

  • a7x有遥控器功能吗(a7r 手机遥控)

    a7x有遥控器功能吗(a7r 手机遥控)

  • xbox软件能不能卸载(xbox可以装哪些软件)

    xbox软件能不能卸载(xbox可以装哪些软件)

  • 荣耀20有红外线和nfc吗(荣耀20有红外线遥控吗)

    荣耀20有红外线和nfc吗(荣耀20有红外线遥控吗)

  • flc是动画文件吗(flc动画全称)

    flc是动画文件吗(flc动画全称)

  • iphonexr进水了怎么办(iphonexr进水了开不了机)

    iphonexr进水了怎么办(iphonexr进水了开不了机)

  • 天猫超市如何包邮(天猫超市怎么样包邮)

    天猫超市如何包邮(天猫超市怎么样包邮)

  • 个税返还奖励财务人员流程
  • 销售货物业务的销项税额怎么计算
  • 进项税额转出时点
  • 运输合同印花税税率
  • 公司卖东西怎么开票
  • 以前年度出口退税申报
  • 长期股权投资中应采用成本法核算的是
  • 专票小数点没打印齐能用吗
  • 什么情况下当月不排卵
  • 机票行程单上没有日期怎么回事
  • 弱电系统多少钱
  • 个体工商户生产经营所得税税率表2021
  • 财务费用为什么借方红字
  • 个人独资企业变更投资人要交税吗
  • 企业年金个人所得税扣除标准
  • 公司成立前购买的设备算个人还是公司
  • 17增值税发票怎么计算
  • 小规模纳税人开专票
  • 服务性合同签了能反悔吗
  • 转让资产使用权收入属于什么收入
  • 全年一次性奖金计税方式
  • 待认证进项税额是什么情况下用的
  • 高新企业境外所得缴纳企业所得税税率为多少
  • 借主营业务成本贷应付账款
  • 固定资产报废相关规定
  • 苹果手机怎么看国行还是美版
  • xp从做系统
  • 加油站的成品油经营许可证过期3个月还能换证吗?
  • 来电转接怎么设置空号
  • php存储过程是什么
  • 其他综合收益属于什么科目借贷
  • 政府发放奖励金如何入账
  • linux设置权限规则
  • 如何通过路由器查看宽带账号密码
  • win11预览版怎么变回正式版
  • PHP:session_encode()的用法_Session函数
  • linux 分享文件
  • php web3
  • php新手入门
  • 借款利息还能再算利息吗
  • 隐藏在草丛里
  • css 宽度 自适应 占满
  • 退休返聘人员算临时工吗
  • php socket编程
  • php多线程编程
  • php开发程序
  • 出口增值税申报了
  • 房租增值税怎么计算
  • 化工企业 设备
  • dede织梦怎么转成zblog
  • 租赁公司成本如何计算
  • 承兑汇票贴现利率是怎么算
  • 国税办税人员怎么解绑
  • 增值税报完了能改么
  • 含税与不含税的计算公式
  • 全资子公司注销的账务处理
  • 固定资产折旧及残值率
  • 为支持防疫工作捐款
  • 银行承兑汇票如果到期了企业没有兑付
  • 没有发票的运输费用怎么入账
  • 违约金 专票
  • 酒店没有营业执照开业犯法吗
  • 公司买的吃的计入什么科目
  • 新会计准则适用企业
  • 2010年漏记的费用,11年该如何记账?
  • 以前年度损益调整属于哪类科目
  • 个人生产经营所得税怎么申报
  • win10 下一代
  • win7任务管理器怎么打开
  • win7 管理
  • linux挂载步骤
  • win7强制关机后内存不足
  • 安全配置为0
  • win8怎么设置桌面背景
  • 笔记本等待网络准备好
  • node js入门
  • Node.js node-schedule定时任务隔多少分钟执行一次的方法
  • js基本代码
  • jq easyui
  • 怎样查询一个企业是不是一般纳税人
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设