【发布时间】:2015-01-30 13:07:05
【问题描述】:
我有一个看起来像这样的名字列表
Noms<- c("André Coin", "XXXAndré Coin", "Gabriel Péri","Léon Blum", "XXXLéon Blum")
我正在尝试创建一个函数,每次在很长的文本中找到这些名称中的每一个时,在以“M”或“Mme”开头的行的开头。
我的文本是一个向量,其中每一行都是一个元素。
所以最后会匹配像"M. André Coin said bla bla" 这样的行;但不会匹配像 "He said bla bla bla to M. André Coin" 这样的行。
最后的要求是“安德烈币”可以与“XXX安德烈币”区分开来。
我目前找到的解决方案是:
findpattern <- function(name,vect) {
x<-paste0("^.{1,3}((M\\s*)|(Mme\\s*))*\\s*",name)
found<-grepl(x,vect)
return(found)
}
但是,当我运行findpattern(Noms,txt) 时,它无法区分“André Coin”和“XXX André Coin”。意思是findpattern("André Coin", "M. XXXAndré Coin")=TRUE".
你能帮我找出我写正则表达式的错误吗?
【问题讨论】:
-
我尝试输入你的函数和
findpattern("André Coin", "M. XXXAndré Coin"),结果是FALSE... -
确实...我很确定我复制了与之前完全相同的代码。我猜一些错字以某种方式解决了这个问题