R 逗号和句点之间的模式的正则表达式
经过数小时的谷歌搜索和徒劳的尝试,我希望有人能帮助解决这个公认的简单问题(尽管我显然对regexp相当陌生) 我有以下类型的数据:R 逗号和句点之间的模式的正则表达式,r,regex,stringr,R,Regex,Stringr,经过数小时的谷歌搜索和徒劳的尝试,我希望有人能帮助解决这个公认的简单问题(尽管我显然对regexp相当陌生) 我有以下类型的数据: name <- c("Doe, Mr. John") 我用提取法做的最好的事情是: str_extract(name, ", .*\\.") 我相信有一个更简单的方法,有人能帮我吗?您可以将所有字母匹配到一个点之前: > name <- c("Doe, Mr. John") > str_extract(name, "\\p{L}+(?=\
name <- c("Doe, Mr. John")
我用提取法做的最好的事情是:
str_extract(name, ", .*\\.")
我相信有一个更简单的方法,有人能帮我吗?您可以将所有字母匹配到一个点之前:
> name <- c("Doe, Mr. John")
> str_extract(name, "\\p{L}+(?=\\.)")
[1] "Mr"
> str_match(name, ",\\s*(\\p{L}+)\\.")[,2]
[1] "Mr"
类似的正则表达式可与str_match
一起使用,以确保我们只匹配逗号后、空格和点前的单词:
> name <- c("Doe, Mr. John")
> str_extract(name, "\\p{L}+(?=\\.)")
[1] "Mr"
> str_match(name, ",\\s*(\\p{L}+)\\.")[,2]
[1] "Mr"
我们可以使用
sub
frombase R
sub("^[^ ]+\\s+([^.]+)\\..*", '\\1', name)
#[1] "Mr"
这看起来很漂亮!谢谢。一个快速但相关的问题:我如何强制“,”成为一个“角色”(团体?)?例如,当我使用str_split函数时,我的初衷是在“,”(即包括空格)和“.”处拆分字符串。但我写它的方式被解释为“逗号、点和空格分割”。也许,你的意思是你实际上想要
stru分割(名称,“[,.]\\s*”[[1]][2]
?字符类[,.]
与当前位置的,
或
匹配。顺便说一句,\p{L}
可以替换为[:alpha:]
。如果你只需要支持ASCII字母,而不是\p{L}
,你可以使用一个通用的[a-Za-z]
字符类。是的,这正是我想要的!谢谢你的帮助!