如何用正则表达式划分单词边界?

oar*_*ish 4 python regex nlp

我正在尝试这样做:

import re
sentence = "How are you?"
print(re.split(r'\b', sentence))
Run Code Online (Sandbox Code Playgroud)

结果是

[u'How are you?']
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西[u'How', u'are', u'you', u'?'].怎么能实现这一目标?

小智 10

不幸的是,Python无法通过空字符串进行拆分.

要解决这个问题,你需要使用findall而不是split.

实际上\b只是意味着词边界.

它相当于(?<=\w)(?=\W)|(?<=\W)(?=\w).

这意味着,以下代码将起作用:

import re
sentence = "How are you?"
print(re.findall(r'\w+|\W+', sentence))
Run Code Online (Sandbox Code Playgroud)

  • 好吧,OP不需要仅空白令牌。 (2认同)
  • 我的意思是`\ w + | [^\w\s] +`可能更合适. (2认同)