1

例えば:

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

次のように返されます。

  1. こんにちは
  2. :)
  3. これは
  4. a
  5. 良い
  6. 今日
  7. :D
  8. エイト
  9. <3

すべての顔文字は 2 文字の長さであると考えることができます...また、それが役立つ場合は、おそらく「前方」の顔文字のみに遭遇するでしょう。

顔文字がない場合は些細なことですが、顔文字があると、他の単語の句読点を取り除くだけでなく、ちょっとつまずきます.

.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 に答える