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

  • 微信图文排版技巧不用知道太多,有这5点就够了!(微信图文排版技巧视频)

    微信图文排版技巧不用知道太多,有这5点就够了!(微信图文排版技巧视频)

  • 荣耀30pro如何前后双景同录(荣耀30pro+技巧)

    荣耀30pro如何前后双景同录(荣耀30pro+技巧)

  • 苹果手机来电语音播报怎么关闭(苹果手机来电语音提示怎么关闭)

    苹果手机来电语音播报怎么关闭(苹果手机来电语音提示怎么关闭)

  • 电脑小广告怎么让它不再出现(电脑小广告怎么能弄干净)

    电脑小广告怎么让它不再出现(电脑小广告怎么能弄干净)

  • 华为nova6视频通话怎么美颜

    华为nova6视频通话怎么美颜

  • 小米cc9隐藏功能(小米cc9隐藏应用的快捷方法)

    小米cc9隐藏功能(小米cc9隐藏应用的快捷方法)

  • 来电没有显示号码是怎么回事(来电没有显示号码怎么设置)

    来电没有显示号码是怎么回事(来电没有显示号码怎么设置)

  • 手机显示timeout什么意思(手机显示无sim卡)

    手机显示timeout什么意思(手机显示无sim卡)

  • 电脑上微信打字怎么另起一行(电脑上微信打字全是英文字母)

    电脑上微信打字怎么另起一行(电脑上微信打字全是英文字母)

  • 浏览别人微博有记录吗(浏览别人的微博会不会留下痕迹)

    浏览别人微博有记录吗(浏览别人的微博会不会留下痕迹)

  • vivox20a什么时候上市(vivox20多久出的)

    vivox20a什么时候上市(vivox20多久出的)

  • 华为ine一al100是什么型号(al100m华为是什么型号)

    华为ine一al100是什么型号(al100m华为是什么型号)

  • apple应用程序支持64位可以卸载吗(apple应用程序支持可以卸载吗)

    apple应用程序支持64位可以卸载吗(apple应用程序支持可以卸载吗)

  • 微店收款二维码怎么申请(微店收款二维码在哪)

    微店收款二维码怎么申请(微店收款二维码在哪)

  • 手机企业qq怎么设置隐身(手机企业qq怎么退出登录)

    手机企业qq怎么设置隐身(手机企业qq怎么退出登录)

  • 手机如何查看本机号码(手机如何查看本机配置)

    手机如何查看本机号码(手机如何查看本机配置)

  • 如何将app和数据传输至这台iphone(ipad选取如何将app和数据)

    如何将app和数据传输至这台iphone(ipad选取如何将app和数据)

  • 服务器与电脑的区别(服务器与电脑的网速是多少)

    服务器与电脑的区别(服务器与电脑的网速是多少)

  • 4月29日是什么星座(4月29日是什么星座女生)

    4月29日是什么星座(4月29日是什么星座女生)

  • iphonexs是几核(苹果xs是什么处理器几核的)

    iphonexs是几核(苹果xs是什么处理器几核的)

  • ipad第七代发布时间(ipad2020第七代)

    ipad第七代发布时间(ipad2020第七代)

  • 浏览器视频怎么打不开(浏览器视频怎么保存到手机视频)

    浏览器视频怎么打不开(浏览器视频怎么保存到手机视频)

  • word顶格在哪里设置(word的顶格怎么设置)

    word顶格在哪里设置(word的顶格怎么设置)

  • 手机关机微信视频显示什么(手机关机微信视频电话会怎么显示)

    手机关机微信视频显示什么(手机关机微信视频电话会怎么显示)

  • 手机浏览器怎么设置成电脑版的(手机浏览器怎么改成电脑版)

    手机浏览器怎么设置成电脑版的(手机浏览器怎么改成电脑版)

  • 微软Win11 Build 22000.194(KB5005635)更新发布(附修复、已知问题)(微软笔记本)

    微软Win11 Build 22000.194(KB5005635)更新发布(附修复、已知问题)(微软笔记本)

  • phpcms判断是否为手机(php判断是否为整数)

    phpcms判断是否为手机(php判断是否为整数)

  • 企业所得税年报怎么查询
  • 9个点的发票跟6个点区别
  • 租金营改增
  • 子公司是长期股权投资吗
  • 增值税是5%的是什么
  • 手机超过多少钱可以报警立案
  • 居民企业应纳税所得额税率
  • 餐饮行业打折部门是什么
  • 汽车的购置税可以不交吗
  • 零余额帐户如何转账
  • 存货报废应如何记账
  • 支付保险费发票怎么入账
  • 单位自有车辆
  • 工程施工企业人工成本最高多少
  • 租入的固定资产属于资产吗
  • 转让土地使用权 简易征收
  • 专用发票第一次怎么开
  • 技术转让所得减半征收计算
  • 无票收入如何做会计凭证
  • 公司必须购买税控设备吗
  • 电子承兑汇票支付信用查询
  • 供应商赠送
  • 营业额和营业收入怎么填写
  • 华为p50e手机价格及参数
  • win7怎么获取管理员
  • 简述php可支持哪些数据类型
  • 没收到windows11更新
  • 如果工资少发怎么办
  • win11企业版激活
  • window10发现威胁怎么办
  • win10怎么推送win11
  • 更新kb4584229
  • 网赚项目——Youtube获取高流量的技巧
  • 材料外加工会计分录
  • 公司怎么查已报销发票
  • 在建工程账务核算方法
  • thinkphp5执行流程
  • 蓝山公馆的房子怎么样
  • 如何用php操作mysql
  • 增值税缓交政策
  • pytorch x.view
  • span标签中的字符串怎么获取
  • 报错专业怎么补救
  • 递延所得税资产和所得税费用的关系
  • 工业企业生产费用最基本的分类是
  • python中的threading模块
  • 结转应交税金的分录
  • 上年多做了收入的事情
  • mysql使用工具
  • 实收资本与资本公积之和小于实收资本
  • 超市的收银小票丢了可以要求重新打印一张吗
  • 衍生工具什么意思
  • 房产税的计算方式
  • 公司担保无效的后果
  • 个体户超额
  • 投标保证金支付给谁
  • 公司两年未给员工申报个税违法吗
  • 支付银行手续费等直接收费金融服务
  • 其他债权投资减值准备是什么科目
  • 重新计量设定受益计划变动额计入
  • mysql深入理解
  • 苹果电脑 输入
  • win8系统设置在哪里
  • linux系统的组成及其作用
  • centos5.8服务器
  • win10周年纪念版
  • linux测试软件
  • win10本地连接怎么改名称
  • win8外接显示器没反应怎么办
  • win7旗舰版开机
  • android开发webview
  • 快速解决胃胀气
  • node.js中模块的文件格式有哪些
  • javascript获取值
  • 全面解析少女时代关系
  • 写给小白的情书
  • 企业破产享有的债权可否提前到期
  • 陕西省税务发票查询系统
  • 工会银行卡怎么开通
  • 济南税务局,济南电子税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设