【问题标题】:Regex Split a Paragraph in to Sentences but skip Prefix Titles正则表达式将段落拆分为句子但跳过前缀标题
【发布时间】:2014-08-07 12:43:58
【问题描述】:

我需要将以下段落拆分为句子,但忽略在使用诸如 Mr. Mrs. Ms. 等前缀标题的点处拆分。

string text = "Joffrey died on March 25, 1988 of AIDS at the age of 57 in New York City, New York. He is buried at Cathedral of Saint John the Divine. Mr.Joffrey was inducted into the National Museum of Dance's Mr. & Mrs. Cornelius Vanderbilt Whitney Hall of Fame in 2000."

一个普通的正则表达式语句,例如:@"(?<=[\.!\?])\s+" 会成功拆分句子,但也会拆分诸如 Mr.Joffrey 之类的单词,这是我想要避免的。

澄清这个问题的正则表达式将非常有帮助:)

【问题讨论】:

  • 首字母缩写的文本怎么样,例如“著名漫画的作者 Gary M. Larson 是 S.O.L.,昨天一头牛决定撞上他的车”。
  • @LasseV.Karlsen Lucas Trzesniewski 的回答也解决了这个问题:)

标签: c# regex split prefix


【解决方案1】:

这很简单,使用否定的lookbehinds:

拆分以下正则表达式:

(?<!Mr?s?)\.\s*

这将匹配前面没有MrMrs 的句点。它还将包括以下空格。

如果你也想忽略首字母,你可以使用这个:

(?<!Mr?s?|\b[A-Z])\.\s*

这将忽略任何以单个大写字母开头的句点。

【讨论】:

  • 明确的答案。工作:) 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
  • 2016-08-04
相关资源
最近更新 更多