将PyTeaser(python)Split Sentences方法转换为C#

时间:2015-11-10 18:07:08

标签: c# python regex

如何在C#中完成以下python正则表达式?

regex_split(u'(?<![A-ZА-ЯЁ])([.!?]"?)(?=\s+\"?[A-ZА-ЯЁ])')

它的作用的一般概念是将一串文本(多个段落和句子)分成一个数组。

INPUT:

我的名字是马克。我有一只猫,我生活在黑暗中。有时我会走到可怕的公园。&#34; &#34;它吓坏了我&#34;,她说。

输出:

[&#34;我的名字是Mark&#34;,&#34;。&#34;,&#34;我有一只猫,我生活在黑暗中&#34;,&#34;。& #34;,有时候我走到了可怕的公园&#34;&#34;,&#34;。\&#34;&#34;,&#34; \&#34;它吓坏了我她说&#34;,&#34;。&#34;]

我认为这是它的意图所在的一般概念。此外,如果有任何换行符,它也应该拆分。

我已经设法得到以下内容,但我也需要拆分新的一行,&#34; \ r \ n&#34;

Regex.Split(content, @"(?<!Mr?s?|\b[A-Z])\.\s*");

我怎样才能模仿c#中的python reg exp?

UPDATE 这是在python中使用reg exp进行的,所以我不明白为什么需要NLP

1 个答案:

答案 0 :(得分:0)

匹配标点符号并将其拆分。

一种可能性:

using System.Text.RegularExpressions;

String content = "My name is Mark. I have a cat and I live in 
the dark. Sometimes I walk to the \"scary park.\" \"It 
terrifies me\", she said.";

Regex.Split(content, @"(\s*\n\s*)|(([.?!])(?:""|(?:\s+)|$))");

给出了:

string[9] {  
    "My name is Mark", ".",  
    "I have a cat and I live in the dark", ".",  
    "Sometimes I walk to the \"scary park\", ".",  
    "\"It terrifies me\", she said", ".", ""
}