[R] match first consecutive list of capitalized words in string

Gabor Grothendieck ggrothendieck at gmail.com
Thu Nov 10 05:58:06 CET 2011


On Tue, Nov 8, 2011 at 7:48 AM, Richter-Dumke, Jonas
<Richter at demogr.mpg.de> wrote:
> Dear R-Helpers,
>
> this is my first post ever to a mailing list, so please feel free to point out any missunderstandings on my side regarding the conventions of this mailing list.
>
> My problem:
>
> Assuming the following character vector is given:
>
> names <- c("filia Maria", "vidua Joh Dirck Kleve (oo 02.02.1732)", "Bernardus Engelb Franciscus Linde j.u.Doktor referendarius sereniss Judex et gograven Rheinensis")
>
> Is there a regular expression matching the first consecutive list of capitalized words in a single characterstring ("Maria", "Joh Dirck Kleve", "Bernardus Engelb Franciscus Linde")?
> This expression would very reliably seperate the person names from the additional information in my historic church register transcription.
>

Try this. It matches a word boundary followed by zero or more of the
parenthesized expression.  That expression is an upper case letter
followed by zero or more lower case letters followed by one or more
spaces.  Finally we match the last word which consists of an upper
case letter followed by zero or more lower case letters and a word
boundary.  Note that it assumes R 2.14.0 or later:

> re <- "\\b([[:upper:]][[:lower:]]* +)*[[:upper:]][[:lower:]]*\\b"
> regmatches(names, regexpr(re, names))
[1] "Maria"                             "Joh Dirck Kleve"
[3] "Bernardus Engelb Franciscus Linde"

-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com



More information about the R-help mailing list