位置: 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语句)

  • 淘宝的免密支付在哪里设置(淘宝的免密支付怎么取消掉)

    淘宝的免密支付在哪里设置(淘宝的免密支付怎么取消掉)

  • 怎样注销抖音账号(怎样注销抖音账号重新申请)

    怎样注销抖音账号(怎样注销抖音账号重新申请)

  • 苹果6屏幕老化发黄解决办法(苹果6屏幕老化发红)

    苹果6屏幕老化发黄解决办法(苹果6屏幕老化发红)

  • 探探账号注销后能恢复吗(探探账号注销后还能注册吗)

    探探账号注销后能恢复吗(探探账号注销后还能注册吗)

  • 京东支付关闭短信验证(怎么取消京东微信支付短信通知)

    京东支付关闭短信验证(怎么取消京东微信支付短信通知)

  • p40拍照怎么显示手机型号(p40手机拍照怎么显示手机型号)

    p40拍照怎么显示手机型号(p40手机拍照怎么显示手机型号)

  • 原彩显示省电还是费电(原彩显示省电还是闪充)

    原彩显示省电还是费电(原彩显示省电还是闪充)

  • oppor17有nfc功能吗(oppor17有不有nfc)

    oppor17有nfc功能吗(oppor17有不有nfc)

  • 显示存储器是外存吗(显示存储器是外部设备吗)

    显示存储器是外存吗(显示存储器是外部设备吗)

  • 路由器黄灯闪烁(华为路由器黄灯闪烁)

    路由器黄灯闪烁(华为路由器黄灯闪烁)

  • 支付宝怎么注销账号(支付宝怎么注销另外一个手机号)

    支付宝怎么注销账号(支付宝怎么注销另外一个手机号)

  • mtp是什么驱动程序(mtp driver)

    mtp是什么驱动程序(mtp driver)

  • 照片kb和k是一样的吗(照片kb和k的区别)

    照片kb和k是一样的吗(照片kb和k的区别)

  • 钉钉下载群文件有记录吗(钉钉下载群文件别人知道吗怎么办)

    钉钉下载群文件有记录吗(钉钉下载群文件别人知道吗怎么办)

  • 手机热点为什么会自动关闭(手机热点为什么连不上)

    手机热点为什么会自动关闭(手机热点为什么连不上)

  • 电子邮件服务器可以匿名转发吗(电子邮件服务器名)

    电子邮件服务器可以匿名转发吗(电子邮件服务器名)

  • 手机双卡怎么使用(手机双卡怎么使用微信)

    手机双卡怎么使用(手机双卡怎么使用微信)

  • 苹果11怎么设置24小时制(苹果11怎么设置24小时到账)

    苹果11怎么设置24小时制(苹果11怎么设置24小时到账)

  • hi6250是什么处理器(hi6250处理器是麒麟多少)

    hi6250是什么处理器(hi6250处理器是麒麟多少)

  • imessge信息要话费吗

    imessge信息要话费吗

  • 淘宝注册地址在哪里(淘宝注册地址在浙江哪里)

    淘宝注册地址在哪里(淘宝注册地址在浙江哪里)

  • 淘宝隐藏评价是啥意思(淘宝隐藏评价是不是就是删除评论)

    淘宝隐藏评价是啥意思(淘宝隐藏评价是不是就是删除评论)

  • 语音备忘录怎么恢复(语音备忘录怎么导出)

    语音备忘录怎么恢复(语音备忘录怎么导出)

  • plus token如何提现(plus token钱能回来吗)

    plus token如何提现(plus token钱能回来吗)

  • 手机qq文件失效怎么恢复(手机qq文件失效怎么恢复没有电脑怎么办)

    手机qq文件失效怎么恢复(手机qq文件失效怎么恢复没有电脑怎么办)

  • 怎么解除快手停止运行(快手停止关注在哪里关)

    怎么解除快手停止运行(快手停止关注在哪里关)

  • oppo手机相册私密照片怎么查看(OPPO手机相册私密照片怎么查找)

    oppo手机相册私密照片怎么查看(OPPO手机相册私密照片怎么查找)

  • uniapp适配问题(uniapp怎么做适配)

    uniapp适配问题(uniapp怎么做适配)

  • 向境外企业支付利息代扣代缴
  • 房产公司预缴土地增值税怎么做账
  • 职工享受工伤津贴的条件
  • 小规模免收增值税 其他收益怎么算
  • 增值税专用发票使用规定 最新
  • 无形资产175加计扣除会计如何处理
  • 公司账户转到对方账户
  • 出租车发票可以重新打印吗
  • 运输业月末进销项税怎么结转
  • 解除劳动合同员工不同意
  • 出口业务退税流程资料
  • 个人独资企业个人所得税税率
  • 委托收款结算方式流程图
  • 会计凭证销毁时应注意哪些问题?
  • 收到虚开的普票已经入账怎么调账
  • 工程咨询服务发展指导意见坚持市场培优的原则
  • 有现金折扣方式有哪些
  • 收到加工劳务发票怎么做
  • 净利润增长率计算公式是什么意思
  • 汽车违章罚款在哪里缴纳
  • 理财产品增值税纳税人
  • 小规模企业给别人开16万增值税专用发票
  • 应征增值税不含税销售额(3%征收率)怎么算
  • 金税盘一直更新登陆不进去
  • 研发支出辅助账2021版
  • 从租计征的房产税减半政策
  • 原始凭据
  • 增值税电子发票没有发票专用章
  • 测试账户收入怎么做
  • 普通发票要写增值税吗
  • windows10如何更改时间
  • 未开票收入缴纳增值税怎么冲减补开发票
  • 借助的近义词
  • macos big sur 怎么样
  • php 数组定义
  • 佣金手续费开什么发票
  • 员工福利费会计处理
  • 差旅费涉及的科目
  • mmtraylsi.exe是什么进程 有什么作用 mmtraylsi进程查询
  • 如何使用微信公交付款
  • 应收账款和应付账款的管理
  • 债务人以固定资产债务重组
  • 货物品种不太多而数量又相对较大
  • 可供出售金融资产现在叫什么
  • vue 查询
  • 前后端交互用什么技术
  • 代扣代缴个人所得税账务处理
  • 增值税小规模纳税人减免增值税政策
  • ❤️国庆假期快到了,用python写个倒计时程序,助你熬到假期!❤️
  • 递延收益的影响
  • 赔偿支出需要纳税调整吗
  • msdn sql server
  • 土地摊销计入成本还是费用
  • 现金流量表季度期初现金余额怎么填
  • 玉米收购厂
  • 上月未记账,本月同样可以记账
  • 补提去年折旧费不需要调整所得税吗
  • 代扣税是啥
  • 结转存货跌价准备是什么意思
  • 律师事务所优惠政策
  • jdbc连接MySQL实验总结
  • window所有程序在哪里
  • win10光驱无法识别
  • vm虚拟机中的浏览器在哪
  • Centos Nginx + Svbversion配置安装方法分享
  • win7旗舰版系统怎么样
  • unity总结
  • eclipse 单词
  • unity3d documentation
  • node 执行js
  • 多态和封装的区别
  • 单向链表的基本操作
  • js function函数
  • android开发前景
  • 简单的比较
  • 出口退税收入怎么做账
  • 4s店买车需要驾驶证吗
  • 公司账户注销了,是不是网银也注销了
  • 个人所得税减免申报操作流程
  • 专用发票章盖在哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设