改进正则表达式将大文本拆分成句子

时间:2013-01-10 09:33:53

标签: c# regex

  

可能重复:
  What is a regular expression for parsing out individual sentences?

我想将大文本拆分成句子。我从回答here

得到的正则表达式
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"); 

如何在正则表达式中实现它?

1 个答案:

答案 0 :(得分:5)

\p{Lt}表示Unicode大写字母(包括重音等),所以

string[] sentences = Regex.Split(mytext, @"(?<=[.!?])\s+(?=\p{Lt})");

应该做你想做的事。

(请注意,我认为.?不需要在字符类中进行转义,所以我也删除了它们,但请检查这些字符是否也适用。)

然而,请注意,这仍将分裂为例如Mr. Jones ...