我正在尝试使用正则表达式来识别国会记录中使用的特定命名约定。
国会记录中的演讲总是以发言人的名字开头。例如,这是一段摘录:
先生。加州多尔南。议长先生,我打算屈服于我的 朋友,但我有问题。情报委员会正在召开会议。
我可以请这位先生耐心等待15分钟 并观看?
先生。特。如果绅士能给我6个 分钟。
先生。加州多尔南。绅士可以4点做吗?
先生。演讲者,我向宾夕法尼亚州的绅士屈服[先生de la CRUZ]。
先生。 de la CRUZ。 blah blah blah
女士。华盛顿的McCORMICK。
国会记录中使用的命名惯例是以标题(先生,夫人,女士)开头,后跟姓氏(全部上限)。在某些情况下,姓氏后面跟着州(如加利福尼亚州的DORNAN先生)。
简而言之,正则表达式应匹配具有以下条件的字符串:
第一个很容易用^(Mr. | Mrs. | Ms。)
完成但其余部分让我陷入困境。
答案 0 :(得分:1)
以下内容如何:
^((?:Mr\.|Mrs\.|Ms\.) [^.]*[A-Z]{2,})(?:(?: of )([^.]*)){0,1}\.
答案 1 :(得分:1)
不完美,但我认为这是一个好的开始:
regmatches(xx,gregexpr('^((Mr|Mrs|Ms)[.][^.]*)[.]',xx))
[[1]]
[1] "Mr. DORNAN of California."
[[2]]
character(0)
[[3]]
[1] "Mr. RITTER."
[[4]]
[1] "Mr. DORNAN of California."
[[5]]
[1] "Mr. Speaker, I yield to the gentleman from Pennsylvania [Mr."
[[6]]
[1] "Mr. de la CRUZ."
[[7]]
[1] "Ms. McCORMICK of Washington."
xx
的位置:
xx <- c("Mr. DORNAN of California. Mr. Speaker, I was going to yield to my friend, but I have a problem. The Intelligence Committee is convening.",
"Could I ask the gentleman to be patient because of that for 15 minutes and watch?",
"Mr. RITTER. If the gentleman could give me just 6 minutes.",
"Mr. DORNAN of California. Can the gentleman do it in 4?",
"Mr. Speaker, I yield to the gentleman from Pennsylvania [Mr. de la CRUZ].",
"Mr. de la CRUZ. blah blah blah",
"Ms. McCORMICK of Washington.")