首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- regex,grep打印出所有

R- regex,grep打印出所有
EN

Stack Overflow用户
提问于 2016-12-10 21:26:54
回答 2查看 90关注 0票数 2

我有这个:

代码语言:javascript
复制
"81 Delaware St, Staten Island, NY 10304, USA"

我想捕捉81 Delaware St,

正在运行

代码语言:javascript
复制
grep("^.+?,", "81 Delaware St, Staten Island, NY 10304, USA", value= TRUE) 

返回:

代码语言:javascript
复制
81 Delaware St, Staten Island, NY 10304, USA

我试过perl=TRUE没有帮助,仍然所有东西都打印出来了。

示例:RegEx,所以我知道这个表达式没有错。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-10 21:47:59

您将与结果混淆,因为正则表达式实际上与传递给grep的字符串匹配,而grep只返回它找到匹配的所有字符向量。grep不返回子字符串。

您可以使用带有sub,.*正则表达式,该正则表达式将匹配,和后面的所有字符,并删除该部分,只留下所需的子字符串:

代码语言:javascript
复制
s <- "81 Delaware St, Staten Island, NY 10304, USA"
sub(",.*", "", s)
## => [1] "81 Delaware St"

请参阅R演示

另一种方法是将子字符串匹配到第一个,

代码语言:javascript
复制
unlist(regmatches(s, gregexpr("^[^,]+", s)))

这个R演示

票数 1
EN

Stack Overflow用户

发布于 2016-12-10 21:46:32

...so我知道这个表达式没有错。

这个说法是错误的。^.+?告诉grep从头到尾返回每个字符。

以下是R文档之外的一些有用的资源。

正则表达式与R语言

R正则表达式

获取和清理数据

一个提示:如果您的街道地址在列出街道之前总是包含逗号和空格(,),您可以使用它将地址从城市分割开来。但总有一种方法可以提取数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41080490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档