gpt4 book ai didi

r - 在特定模式后提取某些单词,同时排除指定模式。在 R

转载 作者:行者123 更新时间:2023-12-04 07:54:11 25 4
gpt4 key购买 nike

使用 R,我想提取建筑物、广场或豪宅的名称。名称在其是否指定建筑物,豪宅,广场之前。
这是一个例子

addresses<-c("big fake plaza, 12 this street,district, city", 
"Green mansion, district, city",
"Block 7 of orange building district, city",
"98 main street block a blue plaza, city",
"blue red mansion, 46 pearl street, city")
我想得到的是
"big fake" "Green" "orange" "blue" "blue red"
我目前使用的代码是
str_extract(addresses, "[[a-z]]*\\s*[[a-z]+]*\\s*(?=(building|mansion|plaza))")
有时名称是两个词,有时是一个。但是,由于格式不同,有时也会提取“a”或“of”。如何继续提取建筑物名称的两个字格式但排除'a'或'of'
提前致谢

最佳答案

一种选择是可选地匹配第一个单词,使用否定前瞻排除一些不被接受的单词。

\b(?:(?!of|a)[a-zA-Z]+\s+)?[a-zA-Z]+\b(?=\s+(?:building|mansion|plaza)\b)
模式匹配:
  • \b一个字边界
  • (?:非捕获组
  • (?!of|a)负前瞻,断言不是 ofa直接向右
  • [a-zA-Z]+\s+如果断言为真,则匹配 1+ 次字符 a-zA-Z 后跟 1+ 空白字符

  • )?关闭组并使其成为可选
  • [a-zA-Z]+\b匹配 1+ 次字符 a-zA-Z 和单词边界
  • (?=正向前瞻,断言右边的是
  • \s+匹配 1+ 个空白字符
  • (?:building|mansion|plaza)\b匹配其中一个选项

  • )关闭前瞻

  • Regex demo
    addresses<-c("big fake plaza, 12 this street,district, city", 
    "Green mansion, district, city",
    "Block 7 of orange building district, city",
    "98 main street block a blue plaza, city",
    "blue red mansion, 46 pearl street, city")

    str_extract(addresses, "\\b(?:(?!of|a)[a-zA-Z]+\\s+)?[a-zA-Z]+\\b(?=\\s+(?:building|mansion|plaza)\\b)")
    输出
    [1] "big fake" "Green"    "orange"   "blue"     "blue red"
    备注 那个 [[a-z]]*应该用单括号 [a-z]*如果你想在字符类中重复范围 a-z,和 [[a-z]+]*应该是 [a-z]+如果要在字符类中重复范围 1+ 次。

    关于r - 在特定模式后提取某些单词,同时排除指定模式。在 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66792720/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com