我有这个:
"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,所以我知道表达式没有错。
答案 0 :(得分:1)
您对结果感到困惑,因为您的正则表达式实际上匹配您传递给grep
的字符串,而grep
只返回找到匹配项的所有字符向量。 grep
不会返回子字符串。
您可以使用sub
,.*
正则表达式匹配,
及其后的所有字符,并删除该部分,只留下所需的子字符串:
s <- "81 Delaware St, Staten Island, NY 10304, USA"
sub(",.*", "", s)
## => [1] "81 Delaware St"
请参阅R demo
替代方法是匹配子字符串直到第一个,
:
unlist(regmatches(s, gregexpr("^[^,]+", s)))
请参阅this R demo。
答案 1 :(得分:0)
...所以我知道表达没有错。
表达错误。 ^.+?
告诉grep从头到尾返回每个字符。
以下是R文档之外的一些有用资源。
Regular Expressions with The R Language
一个提示:如果您的街道地址在列出街道之前始终包含逗号后跟空格(,) - 您可以使用它来分隔城市中的地址。但总有一种方法可以提取数据。