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

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

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\")(?!>)";

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页