我的句子看起来像这样:
"what is this? i want this to work. blah"
如何获得包含这样的标点符号的数组?
[0] = what is this?
[1] = i want this to work.
[2] = blah
答案 0 :(得分:4)
使用示例文本,将其拆分为(?<=[.?!])\s*
。
除此之外,我想补充说,用正则表达式将文本可靠地分成句子是不可能的。
答案 1 :(得分:2)
您可以使用Regex.Split
匹配前缀为标点符号的空白。
Regex.Split(input, "(?<=[.?!])\s+");
(?<=)
是一个外表组。它会检查匹配是否在组之前,但不会捕获它。
答案 2 :(得分:0)
您需要一个进行子字符串替换的方法。使用Ruby的gsub
,例如:
"I am a lion. Hear me roar! Where is my cub? Never mind, found him.".gsub(/[.?!]/, '\0|').split('|')
=> ["I am a lion.", " Hear me roar!", " Where is my cub?", " Never mind, found him."]
这假定句子的定义当然以.
,?
或!
结尾。省略号(...
)会将其搞砸一下。