改进正则表达式以将大文本拆分为句子
本文关键字:文本 拆分 句子 正则表达式 | 更新日期: 2023-09-27 17:51:15
可能的重复项:
什么是解析单个句子的正则表达式?
我想将大文本拆分为句子.我从这里的答案中得到的正则表达式
string[] sentences = Regex.Split(mytext, @"(?<=['.!'?])'s+");
所以我想使用一种模式来做分裂,比如如果.
?
!
跟在space
和capital
字母后面,则拆分。
大写字母表示句子的开头。
text = " Sentence one . Sentence e.g. two ? Sentence three.
sentence[1] = Sentence one
sentence[2] = Sentence e.g. two
对于有问题的情况,例如缩写,我打算替换
mytext.replace("e.g.","eg");
如何在正则表达式中实现这一点?
>'p{Lt}
表示Unicode大写字母(包括重音等(,因此
string[] sentences = Regex.Split(mytext, @"(?<=[.!?])'s+(?='p{Lt})");
应该做你想做的事。
(请注意,我认为.
或?
不需要在字符类中进行转义,所以我也删除了它们,但请检查这是否仍然适用于这些字符。
但是,请注意,这仍然会分裂,例如 Mr. Jones
......