我有这个:
"81 Delaware St, Staten Island, NY 10304, USA"我想捕捉81 Delaware St,
正在运行
grep("^.+?,", "81 Delaware St, Staten Island, NY 10304, USA", value= TRUE) 返回:
81 Delaware St, Staten Island, NY 10304, USA我试过perl=TRUE没有帮助,仍然所有东西都打印出来了。
示例:RegEx,所以我知道这个表达式没有错。
发布于 2016-12-10 21:47:59
您将与结果混淆,因为正则表达式实际上与传递给grep的字符串匹配,而grep只返回它找到匹配的所有字符向量。grep不返回子字符串。
您可以使用带有sub的,.*正则表达式,该正则表达式将匹配,和后面的所有字符,并删除该部分,只留下所需的子字符串:
s <- "81 Delaware St, Staten Island, NY 10304, USA"
sub(",.*", "", s)
## => [1] "81 Delaware St"请参阅R演示
另一种方法是将子字符串匹配到第一个,
unlist(regmatches(s, gregexpr("^[^,]+", s)))见这个R演示。
发布于 2016-12-10 21:46:32
...so我知道这个表达式没有错。
这个说法是错误的。^.+?告诉grep从头到尾返回每个字符。
以下是R文档之外的一些有用的资源。
正则表达式与R语言
R正则表达式
获取和清理数据
一个提示:如果您的街道地址在列出街道之前总是包含逗号和空格(,),您可以使用它将地址从城市分割开来。但总有一种方法可以提取数据。
https://stackoverflow.com/questions/41080490
复制相似问题