我的数据:
Caterina Guonçallvez braçeyro
Francisco Ro[dr]í[gueJz luveyro
Johao de Miranda calçeteyro
Lucas Martinz Mal-Cuzinhado, braçeyro
Francisquo d[e] Arruda braçeyro
Francisquo de Miranda braçeyro -first名姓
带有-first和J (brakets识别)
带有连字符的-first名称
带有粒子的-first名称
带有粒子的-first姓氏
预期产出
Caterina Guonçallvez
Francisco Ro[dr]í[gueJz
Johao de Miranda
Lucas Martinz Mal-Cuzinhado
Francisquo d[e] Arruda
Francisquo de Miranda我试过的是:
^([a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð])\w+[A-Z ,.'-]\w+给予
安东尼奥·戈麦斯
卡特琳娜·瓜恩
弗朗西斯科·罗
乔德
弗朗西斯科d
发布于 2016-05-21 14:32:26
模式(([A-Z][\w\[\]-]+|de|d\[e\])\s?)+返回:
'Caterina Guonçallvez '
'Francisco Ro[dr]í[gueJz '
'Johao de Miranda '
'Lucas Martinz Mal-Cuzinhado'
'Francisquo d[e] Arruda '
'Francisquo de Miranda '这假设您正确地设置了区域设置。
regex匹配字母组(和连字符),以大写字母或"de“开头,后面跟着可选的空格。这意味着您需要剥离字符串以删除尾随空格。
编辑:证明它在R中工作:
> Sys.setlocale("LC_ALL","en_us.UTF-8")
> library(stringr)
> x <- "Caterina Guonçallvez braçeyro "
> str_match(x, '(([A-Z][\\w\\[\\]-]+|de|d\\[e\\])\\s?)+')
[,1] [,2] [,3]
[1,] "Caterina Guonçallvez " "Guonçallvez " "Guonçallvez"https://stackoverflow.com/questions/37364091
复制相似问题