我正在尝试提出正则表达式来识别国会记录中使用的特定命名约定。
国会记录中的演讲总是以演讲者的名字开头。例如,这里有一段摘录:
加利福尼亚的多南先生。议长先生,我打算向我的朋友让步,但我有一个问题。情报委员会正在召开会议。
我可以请这位先生因此耐心等待 15 分钟并观看吗?
里特先生。如果这位先生能给我6分钟。
加利福尼亚的多南先生。大佬能在4内做到吗?
议长先生,我向来自宾夕法尼亚的绅士让步[Mr. 德拉克鲁兹]。
德拉克鲁兹先生。等等等等等等
华盛顿的麦考密克女士。
国会记录中使用的命名约定是以头衔(先生、夫人、女士)开头,然后是姓氏(全部大写)。在某些情况下,姓氏后面是州(如加利福尼亚州的 DORAN 先生)。
换句话说,正则表达式应该匹配符合以下条件的字符串:
- 在字符串的开头查找(先生、夫人或女士)。
- (很少)这后面可能会跟着一些小写单词(如“de la CRUZ”示例中)。
- 在所有(或几乎所有,如 McCORMICK 示例中)大写字母中查找名称
- (在某些情况下)名称后跟“of [state name]”
- 以句号结束。
第一个很容易用 ^(Mr.|Mrs.|Ms.) 完成
但其余的让我卡住了。