Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 将文本拆分为句子,但跳过引用的内容_Ruby_Regex - Fatal编程技术网

Ruby 将文本拆分为句子,但跳过引用的内容

Ruby 将文本拆分为句子,但跳过引用的内容,ruby,regex,Ruby,Regex,我想使用正则表达式(使用Ruby)将一些文本拆分成句子。它不需要精确,所以像“华盛顿特区”这样的案例可以忽略不计 然而,我有一个要求,如果句子被引用(单引号或双引号),那么它应该被忽略 假设我有以下文本: 第一句。“哇!”爱丽丝说。第三节 它应分为三句话: 第一句。 “哇!”爱丽丝说 第三句 目前我有内容。扫描(/[^\.!\?\n]*[\.!\?\n]/),但我对引号有问题 更新: 当前的答案可能会遇到一些性能问题。请尝试以下操作: 'Alice stood besides the table

我想使用正则表达式(使用Ruby)将一些文本拆分成句子。它不需要精确,所以像“华盛顿特区”这样的案例可以忽略不计

然而,我有一个要求,如果句子被引用(单引号或双引号),那么它应该被忽略

假设我有以下文本:

第一句。“哇!”爱丽丝说。第三节

它应分为三句话:

第一句。
“哇!”爱丽丝说 第三句

目前我有
内容。扫描(/[^\.!\?\n]*[\.!\?\n]/)
,但我对引号有问题

更新:

当前的答案可能会遇到一些性能问题。请尝试以下操作:

'Alice stood besides the table. She looked towards the rabbit, "Wait! Stop!", said Alice'.scan(regexp)
如果有人能想办法避免,那就太好了。谢谢

这个怎么样:

result=subject.scan(
/(?:#要么匹配。。。
“[^”]*”#引用的句子
|#或
除了引号或标点符号之外的任何东西。
)++#根据需要重复;避免回溯
[.!?\s]*#然后匹配可选标点符号和/或空格。/x)

太棒了!解释:)嗨,刚刚发现这可能会遇到扫描永不停止的问题。例如,爱丽丝站在桌子旁边。她看着兔子,“等等!停!”爱丽丝说。扫描(rg)。你知道如何避免这种情况吗?@lulalala:是的。问题在于,示例语句不会以标点符号结束,这是正则表达式所要求的。当前正则表达式的问题是,它容易出错。有两种方法可以解决此问题:1.)不需要尾随标点符号,2.)如果缺少尾随标点符号,允许匹配更快地失败(这意味着
Wait!Stop!
将成为有效匹配)。您喜欢哪个版本?非常感谢。我猜是第一个。我分析的文本可能很疯狂,有时句点不在那里。@lulalala:好的,请尝试新版本。听起来像是家庭作业。@theTinMan好吧,这不是,这是我的爱好网站,模仿Github的行注释:。我不懂正则表达式。即使是,你也发现了类似的问题吗?最后,我认为使用正则表达式拆分句子根本不是本地化的。