【问题标题】:Extract non-specific name form string address, ignoring specific patterns提取非特定名称表单字符串地址,忽略特定模式
【发布时间】:2021-07-03 00:06:37
【问题描述】:

我有很长的地址,其中一些只是在我试图提取的各个位置的一般建筑物名称。我已经确定如何提取地址中更标准化的部分,但我一直在试图找出通用名称。

示例数据。

addresses<-c("big fake plaza, 12 this street, district, city", 
"Green mansion, district, city", 
 "Block 7c of orange building  district, city",
"98 main street block a blue plaza, city",
"tower 10, caribbean coast, district",
"block 3a, the latitude, city", 
 "blue red mansion, 46 pearl street, city"
"dorsett hotel, city"
"block 9, Willowland, disctrict, city",
 tower 2, the coronation, 1 fake street, district")

目标是提取非特定的建筑物名称,并且只提取它们。代码中的计划是提取前面没有通用建筑物名称的单词,以及忽略任何块或塔名称。

我有什么

df$add.gen<-str_extract(df$address,""^[^block|^tower](([a-z]+\\s+[a-z]*\\s*[a-z]*\\s*[a-z]*\\s*[a-z]*))(?!building)(?!mansion)(?!garden)(?!house)")

But its not working clearly

我的目标是什么

df$add.gen<-

(NA, 
NA, 
NA,
NA,
"caribbean coast",
"the latitude", 
"dorsett hotel"
"Willowland",
"the coronation")

提前致谢!!

【问题讨论】:

  • 试试trimws(str_extract(df$address, "(?i)(?&lt;=,|^)(?:(?!\\b(?:city|disc?trict|street|plaza|square|tower|block|mansion|garden|house|building)\\b)[^,])*(?=,|$)"))

标签: r regex string extract stringr


【解决方案1】:

你可以使用

df$add.gen <- trimws(str_extract(df$address, "(?i)(?<=,|^)(?:(?!\\b(?:city|disc?trict|street|plaza|square|tower|block|mansion|garden|house|building)\\b)[^,])*(?=,|$)"))

regex demo

详情

  • (?i) - 匹配不区分大小写
  • (?&lt;=,|^) - 紧靠左边,必须有逗号或字符串开头
  • (?:(?!\b(?:city|disc?trict|street|plaza|square|tower|block|mansion|garden|house|building)\b)[^,])* - 除逗号外的任何字符,出现零次或多次(尽可能多),这不是以下整个单词的起始字符:citydisctrictdistrictstreet、@ 987654330@, square, tower, block, mansion, garden, house, building
  • (?=,|$) - 紧靠右边,必须有逗号或字符串结尾。

trimws 是删除前导/尾随空格所必需的。

【讨论】:

  • 也感谢您的解释。这完美无缺
猜你喜欢
  • 2021-05-06
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多