【发布时间】:2012-01-03 04:58:19
【问题描述】:
我似乎无法理解如何做到这一点。我正在尝试提出一个正则表达式(如果它有区别,则适用于.NET),它可以从包含句点缩写的文本块中提取一个句子。基本上,我想从一个特定的起始词开始,不要停留在定义的缩写列表上,而是在结束时结束。
几个例子可能是:
Blah blah blah. Died of disease at Annapolis Junction, Md., February 2, 1862. Blah blah blah.
将捕获“1862 年 2 月 2 日在马里兰州安纳波利斯交界处死于疾病”。 或
Blah blah blah. Died in General Hospital, Washington, D. C., September 17, 1862, of wounds received in action at Bull Run, Va., August 30, 1862. Blah Blah Blah.
将捕捉“1862 年 9 月 17 日死于华盛顿特区综合医院,死于 1862 年 8 月 30 日在弗吉尼亚州布尔伦的行动中受伤。”
使用简单的表达方式
Died [^\.]*\.
当然只匹配第一个时期:“死于疾病,在马里兰州安纳波利斯交界处。”
需要传递的列表缩写将来自受控词汇表,因此正则表达式不需要考虑所有可能的缩写,只需考虑列表中的缩写即可。即:医学博士| D。 C.|弗吉尼亚州。|密歇根州。
我知道以下内容不起作用,但它应该大致了解我要完成的工作:
Died [^(Md\.|D\. C\.|Va\.|Mich\.)]*\.
非常感谢任何帮助!
-马特
【问题讨论】:
-
示例是否总是如您所见,所需的句子在中间?如果是这样,你可以去掉外面的句子。
-
句子可以出现在文本块中的任何位置,并且可以以任意数量的特定单词开头。