1

例如:

Hello! :)  It's a good day to-day :D  'Aight? <3

它会返回:

  1. 你好
  2. :)
  3. 它是
  4. 一种
  5. 好的
  6. 今天
  7. :D
  8. '好吧
  9. <3

人们可能会认为所有表情符号都是两个字符长......而且,如果有帮助,可能只会遇到“转发”表情符号。

没有表情符号的情况是微不足道的,但有了它们——以及去掉其他单词的标点符号——有点让我绊倒。

除了 .split 和运行一个块来逻辑检查每个单词之外,还有没有一种快速的方法?

4

2 回答 2

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
于 2012-07-26T16:07:56.483 回答
0

它实际上不是正则表达式,但可以完成工作!

"Hello! :)  It's a good day to-day :D  'Aight? <3".split
=> ["Hello!", ":)", "It's", "a", "good", "day", "to-day", ":D", "'Aight?", "<3"]
于 2012-07-26T16:09:01.070 回答