RegEx的身份解析

时间:2018-02-19 23:47:02

标签: python r regex

我有一份受益于身份解析的论文作者名单! 例如,它应该匹配这些名称:

Peter J. Smith
Peter Smith
P.J. Smith
P. J. Smith (works with space or without it)
p.j. smith 

我是RegEx的新手。我想在R / Python中编写一个RegEx,它匹配名字的首字母和整个姓氏,并忽略中间名。 (虽然,这种方法会有一些问题,例如有像Peter L. Smith这样的名字,但我认为考虑中间名会使事情变得复杂。)感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

在最后的注释中使用L尝试将第一个字母加上最后一个空格后的所有内容,然后将其传递到语音包中的一个算法。在这个例子中,它确实将Peter Smith的所有变体映射到相同的代码,同时用不同的代码区分Peter Sorensen。

library(phonics)

onca(sub("^(.).* (.*)", "\\1 \\2", trimws(L)))
## [1] "P253" "P253" "P253" "P253" "P253" "P265"

该软件包还有soundex和其他可以尝试的算法。

注意

L <- c("Peter J. Smith", "Peter Smith", "P.J. Smith", "P. J. Smith", "p.j. smith", 
 "Peter Sorensen")