我试图从我的文档列表中提取名字。名字总是最后一个,第一个模式的第一个出现。
我正在尝试下面的正则表达式与stringr,但它不工作^[A-Z][a-z]+,\s[A-Z][a-z]+$我相信这是因为正则表达式之前的模式在整个文档中不是恒定的。请参阅下面的示例。
library(stringr)
m = c(" name: aaaaaa, bbbbbb age: 25" , "age 34 person: aaaa, bbbb", " location: A name
aaaa, bbbbbbb", "aaaaa, bbbb")
str_extract(m, "^[A-Z][a-z]+,\\s[A-Z][a-z]+$")
# I tried to add a white space before and after the beginning of the pattern
# but still not working:
str_extract(m, "^\\s[A-Z][a-z]+,\\s[A-Z][a-z]+$\\s")
字符串
预期的输出是名称列表:aaaaa,bbbbbb aaa,bbbb aaa,bbbbbb aaa,bbbb
感谢你的建议。
2条答案
按热度按时间polkgigr1#
字符串
创建于2020-09-02由reprex package(v0.3.0)
型
ccrfmcuu2#
您的正则表达式似乎不完全正确。请尝试使用
[A-Za-z]+,\s[A-Za-z]+
,看看是否有区别。语句开头的插入符号只会匹配行首模式开始的字符串,最后的美元符号只会匹配在行的最后结束的模式。我还将A-Z
和a-z
组合成一组,删除了一个不必要的反斜杠。将来用RegExr之类的东西测试你的正则表达式可能会很有帮助,它可以保存很多重复运行程序的痛苦。