例如:
Hello! :) It's a good day to-day :D 'Aight? <3
它将返回:
有人可能认为所有表情符号都是两个字符长......如果它有帮助,也可能只会遇到“转发”表情符号。
没有表情符号的情况是微不足道的,但是与它们一起 - 以及删除其他单词的标点符号 - 有点让我感到沮丧。
除了.split还有一个快速的方法并运行一个块来逻辑检查每个单词吗?
答案 0 :(得分:1)
以下正则表达式应该找到任何单词(除了短划线/单引号/下划线之外没有标点符号)或2个字符的表情符号:
\s*(?:([a-zA-Z0-9\-\_\']+)|([\:\;\=\[\]\{\}\(\)\<3dDpP]{2}))\s*
正则表达式解释:
\s* # any whitespace
(?:
([a-zA-Z0-9\-\_\']+) # any alpha-numeric character, dashes, underscores, single-quotes
|
([\:\;\=\[\]\{\}\(\)\<3dDpP]{2}) # any 2-punctuation marks commonly found in emoticons, including
# the number 3, for the <3 and D for :D
)
\s* # any whitespace
答案 1 :(得分:0)
它实际上并不是一个正则表达式,而是完成了工作!
"Hello! :) It's a good day to-day :D 'Aight? <3".split
=> ["Hello!", ":)", "It's", "a", "good", "day", "to-day", ":D", "'Aight?", "<3"]