C# 分割句子的正則表達式,正確分割句子


出於需要,自己寫了個分割句子用的正則表達式,考慮了各種特殊情況,所以寫的比較長

public static Regex UselessPunctionRegex = new Regex(@"'(?!(s|t|re|m)( |$))|\.$|\. |\.{2,}|©|`|~|!|@|#|\$|%|\^|\*|\(|\)|(^|[^\w])-+|-+($|[^\w])|_|=|\+|\[|\]|\{|\}|<|>|\\|\||/|;|:|""|•|–|,|\?|×|!|·|…|—|(|)|、|:|;|‘|’|“|”|《|》|,|。|?");

比如下面的句子可以進行正確的分割:

@"What's your name? My name is Han mei-mei. I am from U.S.A! Nice to meet you!"

它會分割成:

What's your name

My name is Han mei-mei

I am from U.S.A

Nice to meet you

保證了特殊標點符號不會成為分隔符,比如其中的What's,mei-mei,U.S.A

我把鍵盤上所有的標點都按上去了。

【注意】此正則表達式不能識別不加空格的句號分隔符,比如

Nice to meet you.Nice to meet you, too.

只能分割成

Nice to meet you.Nice to meet you

too

要想解決這個問題,建議首先使用OpenNLP工具,里面有個類名叫

EnglishMaximumEntropySentenceDetector

它有個方法名叫

SentenceDetect()

可以分割以結束符(句號,問號,省略號)為結尾的句子,

然后再使用上面的正則表達式,就更加准確了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM