正则表达式将句子分开,包括标点符号,但不包括标题(先生,夫人等)

时间:2015-04-03 19:01:44

标签: c# regex split

我希望获得一个将文本分成句子的正则表达式,留在标点符号中(在标点符号后打破空格但不打破标题。

我几乎就在那里。

@"(?<=[\.!;\?])\s+" 

在空格上分裂,但也会在标题上分割。

@"(?<!Mr|Mrs|Dr|Ms|St|a|p|m|K)\.|;" 

不会对标题进行拆分,但会删除标点符号。

有关组合这两个表达式的任何建议,以便正则表达式在标点符号后在空格上分割,但不会在标题上拆分?

示例文字:

  

所有品种中的偷懒和鲨鱼已被播种播出       命运多me的事业;甚至那些已经考虑过它的历史的人       从这种邪恶的最外层圈子已经不知不觉地受到诱惑       陷入一种松散的方式让坏事独自承担自己的坏事       当然,还有一种宽容的信念,即如果世界出了问题,那就是在某些方面       副手的态度从未意味着正确。

     

因此,在泥泞的中间和雾的中心,坐着   高级大法官在他的高等法院。

     

&#34;先生。缠结,&#34;高级大法官说,后来是什么       在这位学识渊博的绅士的口才下躁动不安。

     

&#34; Mlud,&#34;特朗先生说。 Tangle先生更了解Jarndyce和       Jarndyce比任何人都多。他以它闻名 - 应该永远不会有       自从他离开学校后再读其他任何东西。

     

&#34;你几乎已经结束了你的论点?&#34;

     

&#34; Mlud,没有 - 各种各样的观点 - 认为这是我的责任tsubmit - ludship,&#34;是       从Tangle先生那里退出的答复。

     

&#34;我相信酒吧的几位成员仍然会被听到?&#34;说       大臣带着微笑。

2 个答案:

答案 0 :(得分:1)

这有效地结合了您正在寻找的内容:

 @"(?<!(?:Mr|Mr.|Dr|Ms|St|a|p|m|K)\.)(?<=[.!;\?])\s+"

但是,我认为它不可靠。如果一个句子用&#34; abaracadabra。&#34;?

这样的句子结束怎么办?

答案 1 :(得分:1)

好的,这有效:

(?<=[\.!;\?])(?<!Mr\.|Mrs\.|Dr\.|Ms\.|St\.)\s+