【Java】正则表达式匹配多单词任意顺序组合的字符串

在处理表情抽取时遇到浏览器间<img>标签属性顺序不同的问题。原正则表达式无法应对属性顺序变化。从Stack Overflow找到解决方案,创建了一个新的正则表达式 `(?!<img)\s+(?=.*title=""\S+"")(?=.*class=""emoji\s+emoji\w+"")(?=.*src=""1.jpg"")(?!>)`,该正则能匹配任意顺序出现的`title`, `class` 和 `src` 属性。" 86326460,8256525,笔记本屏幕闪烁与花屏:原因及解决方案,"['操作系统', '硬件故障']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【问题】做表情抽取的时候发现标签里面的属性在不同浏览器下顺序不尽相同,比如:

chrome上这样的一个标签:<img src="1.jpg" title="hello" class="emoji emoji=12345">

在firefox上会变成这样:<img title="hello" class="emoji emoji=12345" src="1.jpg">

最开始的正则规则是简单粗暴的方式:

String rex = "<img src=\"1.jpg\"\\stitle=\"\\S+\"\\s+class=\"emoji\\s+emoji\\w+\">";

在firefox上彻底失败了

【解决】

解决这个问题的核心问题在于:能够匹配任意位置出现特定的字符串

stack overflow上好不容易找到了一个方法http://stackoverflow.com/questions/26041258/java-regex-looking-a-combination-of-words-in-any-order

借鉴这个方法写出了下面的正则

String rex = "(?!<img)\\s+(?=.*title=\"\\S+\")(?=.*class=\"emoji\\s+emoji\\w+\")(?=.*src=\"1.jpg\")(?!>)";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值