【问题】做表情抽取的时候发现标签里面的属性在不同浏览器下顺序不尽相同,比如:
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\")(?!>)";