2013-06-20 1 views
0

국회 기록에 사용 된 구체적인 명명 규칙을 식별하는 정규 표현식을 제시하려고합니다.국회 기록에서 이름 일치

국회 기록의 연설은 항상 연사의 이름 앞에옵니다. 예를 들어, 다음은 발췌 부분입니다.

Mr. DORNAN of California. 스피커, 내 친구에게 양보 하겠지만 문제가 있습니다. 정보위원회가 소집되고있다.

나는 15 분 동안 그 때문에 신사에게 인내심을 요청할 수 있습니까? ?

Mr. RITTER. 신사가 내게 줄 수있는 경우에만 6 분.

Mr. DORNAN of California. 신사가 4시에 할 수 있니?

Mr. Speaker, 나는 펜실베니아에서 신사에게 양보합니다. 드 라 크루즈].

Mr. de la CRUZ. ㅋㅋㅋ

워싱턴의 McCORMICK.

국회 기록에서 사용되는 명명 규칙은 제목 (Mr., Mrs., Ms)과 성 (모두 대문자)으로 시작해야합니다. 어떤 경우에는 성 (state)이 뒤를 잇습니다 (캘리포니아의 DORNAN 씨와 같이).

즉, 정규 표현식은 다음과 같은 기준으로 문자열을 일치해야합니다 : 문자열의 시작에서 중 (씨, 여사, 또는 양)에 대한

  1. 봐.
  2. (드물게) 'de la CRUZ'예와 같이 일부 소문자가 올 수 있습니다. 이름에 대한
  3. 전체 (또는 대부분의 모든, 맥코믹의 예에서와 같이)이 이름이 기간에
  4. 끝 '[상태 이름]의'다음됩니다 (경우에 따라)
  5. 모자에.

첫 번째는 쉽게 달성된다^(씨 | 여사. | MS)

그러나 나머지는 나를 붙어 있습니다.

+0

파서와 문법이 더 좋은 아이디어입니다. – duffymo

+0

개별 요소를 추출해야합니까?그렇지 않다면, 표제를 따르는 기간까지 일치시켜야합니다. 맞습니까? –

+0

예상되는 결과를 추가 할 수 있습니까? – agstudy

답변

1

방법에 대한 다음과 같은 :

^((?:Mr\.|Mrs\.|Ms\.) [^.]*[A-Z]{2,})(?:(?: of)([^.]*)){0,1}\. 

http://rubular.com/r/RWs7k9f0pd

+0

성이 적어도 두 개의 연속 대문자로 끝나는 가정을 기반으로 업데이트되었습니다. –

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.")