我想使用正则表达式(使用Ruby)将一些文本拆分成句子。它不需要准确,所以像“华盛顿特区”这样的案例。可以忽略。
但是我要求如果引用句子(用单引号或双引号引用),那么应该忽略它。
说我有以下文字:
一句话。 “哇。”爱丽丝说。 Senetence Three。
应分为三句话:
一句话。
“哇。”爱丽丝说 句子三。
目前我有content.scan(/[^\.!\?\n]*[\.!\?\n]/)
,但我的引号有问题。
更新
目前的答案可能会遇到一些性能问题。请尝试以下方法:
'Alice stood besides the table. She looked towards the rabbit, "Wait! Stop!", said Alice'.scan(regexp)
如果有人能弄清楚如何避免它会很好。谢谢!
答案 0 :(得分:8)
这个怎么样:
result = subject.scan(
/(?: # Either match...
"[^"]*" # a quoted sentence
| # or
[^".!?]* # anything except quotes or punctuation.
)++ # Repeat as needed; avoid backtracking
[.!?\s]* # Then match optional punctuation characters and/or whitespace./x)