我想把一个句子分成单词和特殊字符。我正在使用下面的正则表达式:
@"((\b[^\s]+\b)((?<=\.\w).)?)
但它只返回单词而不是特殊字符,例如空格分隔的连字符或冒号。
理想情况下,对于句子:
“马上!” 她喊道,双手在空中挥舞——在几声欢呼声中——大约两分钟。
我应该得到:
正确的 现在 她 大喊 和 手 飘飘然 在 这 空气 - 之中 一个 很少 干杯 - 为了 关于 二 分钟
也许以这样的模式分裂:
@"\s+(?:\p{P}(?!\s))?|\b\p{P}+\s*"
以防万一您想要一种非正则表达式的方式从句子中删除标点符号并仍然保留连字符:
import string
s = '"Right now!" she shouted, and hands fluttered in the air - amid a few cheers - for about two minutes.'
x = "".join([c for c in s if c =="-" or c not in string.punctuation])
输出:
'Right now she shouted and hands fluttered in the air - amid a few cheers - for about two minutes'
只需使用x.split()
将其标记为您想要的输出。