0

我想把一个句子分成单词和特殊字符。我正在使用下面的正则表达式:

@"((\b[^\s]+\b)((?<=\.\w).)?)

但它只返回单词而不是特殊字符,例如空格分隔的连字符或冒号。

理想情况下,对于句子:

“马上!” 她喊道,双手在空中挥舞——在几声欢呼声中——大约两分钟。

我应该得到:

正确的
现在
她
大喊
和
手
飘飘然
在
这
空气
-
之中
一个
很少
干杯
-
为了
关于
二
分钟
4

3 回答 3

1

听起来这个正则表达式会做你正在寻找的东西:

@"\b\s?([A-Za-z-]+)\s?\b"

不过,对于您一直在尝试的正则表达式来说,这似乎有点太简单了!也许还有更多的东西?

于 2013-07-21T19:58:56.243 回答
0

也许以这样的模式分裂:

@"\s+(?:\p{P}(?!\s))?|\b\p{P}+\s*"
于 2013-07-21T20:02:21.523 回答
0

以防万一您想要一种非正则表达式的方式从句子中删除标点符号并仍然保留连字符:

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()将其标记为您想要的输出。

于 2013-07-22T06:56:10.793 回答