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

  • 索尼xm3要怎么连接蓝牙(索尼xm3怎么连接ipad)

    索尼xm3要怎么连接蓝牙(索尼xm3怎么连接ipad)

  • 华为nova4e长截图怎么截(华为nova4e长截图如何截取)

    华为nova4e长截图怎么截(华为nova4e长截图如何截取)

  • 虎牙直播礼物怎么分成(虎牙直播礼物怎么提现手机)

    虎牙直播礼物怎么分成(虎牙直播礼物怎么提现手机)

  • 钉钉为什么会被禁言(钉钉为什么会被加入陌生企业)

    钉钉为什么会被禁言(钉钉为什么会被加入陌生企业)

  • 移动通信的基本上是每隔几年要升级一代(移动通信的基本技术)

    移动通信的基本上是每隔几年要升级一代(移动通信的基本技术)

  • 固态硬盘无法识别(固态硬盘无法识别怎么修复)

    固态硬盘无法识别(固态硬盘无法识别怎么修复)

  • 华为手机延时拍照在哪里设置(华为手机延时拍照怎么设置为10秒)

    华为手机延时拍照在哪里设置(华为手机延时拍照怎么设置为10秒)

  • qq音乐设置在哪里找(qq音乐随身听怎么关闭)

    qq音乐设置在哪里找(qq音乐随身听怎么关闭)

  • 表格打开是灰色点不了(表格打开是灰色的怎么回事)

    表格打开是灰色点不了(表格打开是灰色的怎么回事)

  • 什么是宽带识别码(什么是宽带识别网)

    什么是宽带识别码(什么是宽带识别网)

  • 苹果朋友圈怎么发文字(苹果朋友圈怎么设置只可以看三天的)

    苹果朋友圈怎么发文字(苹果朋友圈怎么设置只可以看三天的)

  • xr信号满格但上网慢(苹果xr信号不满格)

    xr信号满格但上网慢(苹果xr信号不满格)

  • 内部存储器指什么(内部存储器是什么)

    内部存储器指什么(内部存储器是什么)

  • 抖音发私信有已读提示吗(抖音发私信已读并撤回怎么设置)

    抖音发私信有已读提示吗(抖音发私信已读并撤回怎么设置)

  • 快手推广审核要多久(快手推广审核要多久通过)

    快手推广审核要多久(快手推广审核要多久通过)

  • 携程订票优享怎么取消(携程旅行买票优享预定怎么取消)

    携程订票优享怎么取消(携程旅行买票优享预定怎么取消)

  • word怎么自动编号(word怎么自动编辑页脚)

    word怎么自动编号(word怎么自动编辑页脚)

  • 手机膜彩虹纹怎么去除(手机膜出现彩虹划痕)

    手机膜彩虹纹怎么去除(手机膜出现彩虹划痕)

  • iphone7是什么处理器(iphone7是什么样的)

    iphone7是什么处理器(iphone7是什么样的)

  • 20000毫安充电宝能充手机几次(20000毫安充电宝能充几次手机)

    20000毫安充电宝能充手机几次(20000毫安充电宝能充几次手机)

  • 一加七有耳机孔吗(一加7p耳机孔)

    一加七有耳机孔吗(一加7p耳机孔)

  • 基于C#开发 B/S架构的实验室管理系统 云LIS系统(MVC + SQLserver + Redis)(c#开发入门及项目实战)

    基于C#开发 B/S架构的实验室管理系统 云LIS系统(MVC + SQLserver + Redis)(c#开发入门及项目实战)

  • python中如何创建新表格(python中如何创建一个新文件)

    python中如何创建新表格(python中如何创建一个新文件)

  • 小规模纳税人未达起征点增值税处理
  • 小规模企业申报时间
  • 员工餐补是放入福利费吗?
  • 担保费能否开专票
  • 2020年企业减免
  • 小规模纳税人水电费税率
  • 房产税计税依据含税还是不含税
  • 销售息税前利润是什么
  • 营改增后转让土地使用权增值税
  • 增值税申报和开票不一致怎么做账
  • 预收账款核算内容是什么
  • 公路工程营改增
  • 会计人员必备的知识和技能
  • 买车购置税为什么除11.3
  • 资产类账户的期末余额计算公式
  • 成立一般纳税人公司有什么好处
  • 当期净资产收益率怎么算
  • 财政部2019年39号第七条
  • 土地出让金怎么入账
  • 投标标费退回怎么做分录
  • 公司备用金可以取多少
  • 营业执照办理流程需要多久
  • 什么样的公司可以交五险一金
  • 税务局报表利润表本期金额
  • 先开票还是先预约
  • 购买税控设备,享受何种优惠政策
  • 企业向个人借款是否交印花税
  • win11资源管理器卡死
  • 什么是进项税和销项税
  • 上年多计提所得税怎么做会计分录
  • nmeo.exe是什么
  • php strlen函数和mb_strlen
  • linux更改指定用户的相关信息
  • 购买土地前期测量费怎么入账
  • mac应用程序图标
  • php timestamp
  • 固定资产自行建造的会计处理
  • php编程技术
  • 善意取得虚开增值税专用发票处理
  • thinkphp伪静态nginx
  • 微信手机充值怎么自定义金额
  • 前端权限控制实战
  • php 微信公众号自定义菜单
  • 已认证发票被作废
  • 你用python做什么
  • 企业对外付汇怎么交税
  • 什么叫网银盾账户
  • 非货币性职工薪酬
  • 增值税达不到起征期
  • 员工休产假社保如何交
  • 小规模纳税人减按1%如何填报申报表
  • 会计核算以什么为主
  • 专利年费 缴纳
  • 小规模企业税金怎么做账
  • 土地管理费属于什么费用
  • 核销贷款收回账务怎么做
  • 购货方尚未偿付的货款属于什么会计科目
  • 发票抵扣联要放在凭证里面吗
  • 一般纳税人开错税率严重吗
  • 房地产企业会计处理
  • mysql的全文索引的用处
  • mscorsvw.exe是什么
  • 如何延长手机电池使用寿命
  • WIN10系统睡眠后点不动
  • 电脑系统管理员已阻止这个应用怎么办
  • win7系统怎么调出运行窗口
  • Linux Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点
  • linux怎么ssh远程
  • javascript要打开吗
  • 数字动画文件格式有哪些
  • python中计数函数怎么用
  • javascript bug
  • 广西国家税务总局电子税务局官网
  • 税务稽查时间最长多久?
  • 重庆九龙坡区商务委员会
  • 环保税征税范围44项
  • 走入基层
  • 河南省优秀班主任2022
  • 多缴税款可以抵滞纳金吗?
  • 非关税壁垒英语翻译
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设