作者:舅舅家123_204 | 来源:互联网 | 2023-05-25 16:54
我们正在努力,我们希望用户能够同时使用的表情符号的语法项目(如:smile:
,:heart:
,:confused:
,:stuck_out_tongue:
),以及正常的表情符号(如:)
,<3
,:/
,:p
)
我在使用表情符号语法时遇到问题,因为有时这些字符序列会出现在:
普通字符串或网址 - http :/
/example.com
在表情符号语法中 - :p
encil:
我怎样才能找到这些表情字符序列,而不是当其他字符靠近它们时?
我用于所有表情符号的整个正则表达式是巨大的,所以这里是一个trimed down版本:
(\:\)|\:\(|<3|\:\/|\:-\/|\:\||\:p)
您可以在这里播放它的演示:http://regexr.com/3a8o5
1> Jesse Sweetl..:
首先匹配表情符号(以处理:pencil:示例),然后检查终止空格或换行符:
(\:\w+\:|\<[\/\\]?3|[\(\)\\\D|\*\$][\-\^]?[\:\;\=]|[\:\;\=B8][\-\^]?[3DOPp\@\$\*\\\)\(\/\|])(?=\s|[\!\.\?]|$)
此正则表达式匹配以下(首选表情符号)返回匹配组1中的匹配:
:( :) :P :p :O :3 :| :/ :\ :$ :* :@
:-( :-) :-P :-p :-O :-3 :-| :-/ :-\ :-$ :-* :-@
:^( :^) :^P :^p :^O :^3 :^| :^/ :^\ :^$ :^* :^@
): (: $: *:
)-: (-: $-: *-:
)^: (^: $^: *^:
<3 3 <\3
:smile: :hug: :pencil:
除了空格之外,它还支持终端标点符号作为分隔符.
您可以在此处查看更多详细信息并进行测试:https://regex101.com/r/aM3cU7/4
当匹配`(`或`)`你还应该检查它不是有效的括号集的一部分,例如你不希望它在这里匹配&#39;8)`表情符号:`blah blah bug(转载)在iOS 8)`.简而言之,这真的不是你能用正则表达式处理好的东西.