C#Regex Sentences Splitter期间

时间:2014-06-12 20:14:55

标签: c# regex nlp

我试图在常见案例中找到句子末尾的.句点。我有两个不同的正则表达式可以完成大部分工作。问题是我需要将它们组合在一起,反之亦然,使用一个作为第一组来排除它们并做第二个并替换第一个。这个例子会更好。

请考虑以下文字。

  

计量单位的缩写是没有句号的(除了“in”,当它可能与介词混淆时)。我们对大多数小写缩写使用句点,例如并且即和c.o.d.对于非常常见的缩写,请忽略句点,如rpm和mph。当一个句点的缩写结束一个句子时,那段时间就足以结束这句话:他住在华盛顿特区。因为人名的后缀需要一段时间:小史密斯生活在伊利。在正式文本中,缩短军事头衔 - 切斯特皮亚西克中校 - 不是一个好主意 - 但在非正式文本中,切斯特皮亚西克中校是可以接受的。 (注意“Lt。”之后的空格。)学位可以用句点写成,但不要插入空格 - 博士学位。或博士,M.B.A。或MBA - 在学位内。检查http://aaa.aaa.aaa此链接www.google.com非常好。最后这是一个参考(某人2009)。

     
      
  • 使用初始后的句号。示例:John F. Kennedy
  •   

以下是一些清单:

  
      
  1. 一个清单。
      一个。子清单。
      A.另一个清单。
  2.   

以下是我的两个正则表达式。

(?<=( (?!((http?)|(www)))([^A-Z0-9 ]+)|( [0-9]*[)])))([\.])
(?<=([a-z]{3,}))([\.])

注意我正在将它用于小型NLP应用程序,因此我不想使用完整的NLP工具,而且我也在C#.NET环境中使用正则表达式。

1 个答案:

答案 0 :(得分:0)

我知道在如此短的时间内回答我的问题很奇怪......但这是...... 我使用了这个正则表达式(假设缩写不超过3个字符。

  

(?&lt; =((?!((http?)|(www)))([AZ]?[az] {3,})|([^] * [)])))([ 。])

我在这个网站上测试了http://regexhero.net/tester/ 太糟糕的网站它没有像regex101.com链接,但如果你复制并粘贴上面的文本和正则表达式,你会看到它的工作...