C# 分割句子的正则表达式,正确分割句子
2012-07-05 17:35
274 查看
出于需要,自己写了个分割句子用的正则表达式,考虑了各种特殊情况,所以写的比较长
我把键盘上所有的标点都按上去了。
【注意】此正则表达式不能识别不加空格的句号分隔符,比如
EnglishMaximumEntropySentenceDetector
它有个方法名叫
SentenceDetect()
可以分割以结束符(句号,问号,省略号)为结尾的句子,
然后再使用上面的正则表达式,就更加准确了
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.AMy name is Han mei-mei
I am from U.S.A
Nice to meet you
我把键盘上所有的标点都按上去了。
【注意】此正则表达式不能识别不加空格的句号分隔符,比如
Nice to meet you.Nice to meet you, too.
只能分割成 Nice to meet you.Nice to meet you
too
要想解决这个问题,建议首先使用OpenNLP工具,里面有个类名叫too
EnglishMaximumEntropySentenceDetector
它有个方法名叫
SentenceDetect()
可以分割以结束符(句号,问号,省略号)为结尾的句子,
然后再使用上面的正则表达式,就更加准确了
相关文章推荐
- 用正则表达式分割字符串(C#扩展方法)
- C#正则表达式判断输入日期格式是否正确
- C#正则表达式判断输入日期格式是否正确
- C#正则表达式判断输入日期格式是否正确
- C#正则表达式判断输入日期格式是否正确
- C#使用正则表达式验证手机号格式是否正确
- 用正则表达式判断是否是正确路径格式C#代码
- C#正则表达式判断输入日期格式是否正确
- 常用的C#正则表达式
- C#中正则表达式的3种匹配模式
- C#用正则表达式 获取网页源代码标签的属性或值
- C# 常见Url操作实例(一)、正则表达式匹配URl
- C#正则表达式应用范例
- C# 中的常用正则表达式总结(转)
- 黄聪:C#用正则表达式获得指定开始和结束字符串中间的一段文本
- C#正则表达式整理备忘
- c#正则表达式--环视
- c# 正则表达式
- C# 中的常用正则表达式总结
- C# 中正则表达式 Group 分组【转】