gpt4 book ai didi

regex - 为什么这个正则表达式不能在 R 中工作

转载 作者:行者123 更新时间:2023-12-01 09:53:14 24 4
gpt4 key购买 nike

我已经尝试过 grep、grepl、regexpr、gregexpr 和所有返回失败或非整数。

Ojbect是“test”,是一个带地址的字符串。提供的示例:

[9972] "1350 Hwy 160 W\nFort Mill, SC 29715"                                                                 
[9973] "Sonoran Desert Dentistry\n9220 E Raintree Dr\nSte 102\nScottsdale, AZ 85260"
[9974] "3252 Vilas Rd\nCottage Grove, WI 53527"
[9975] "224 W Cottage Grove Rd\nCottage Grove, WI 53527"
[9976] "320 W Cottage Grove Rd\nCottage Grove, WI 53527"
[9977] "7914 State Road 19\nDane, WI 53529"
[9978] "106 Dane St\nDane, WI 53529"

目标是提取最后一个“\n”之后的所有内容,因此只保留通过邮政编码的城市。像“Cottage Grove, WI 53527”

这是一个不起作用的 grep 和正则表达式示例:

> grep("\\[^\\]+$", test)
integer(0)

任何帮助都会很棒。

最佳答案

grep() 不改变文本。它只会找到它并返回匹配索引或匹配本身。要更改匹配的文本,您需要使用 sub()gsub()。在这种情况下,sub() 是合适的,因为您希望删除每个字符串中最后一个换行符之前的所有内容。以下应该做到这一点。

sub(".*\n", "", test)
# [1] "Fort Mill, SC 29715" "Scottsdale, AZ 85260"
# [3] "Cottage Grove, WI 53527" "Cottage Grove, WI 53527"
# [5] "Cottage Grove, WI 53527" "Dane, WI 53529"
# [7] "Dane, WI 53529"
  • .* 是贪心的,匹配任何东西
  • \n 就是我们要找的

由于 .* 是贪婪的,这将删除所有内容,包括最后一个 \n

数据:

test <- c("1350 Hwy 160 W\nFort Mill, SC 29715", "Sonoran Desert Dentistry\n9220 E Raintree Dr\nSte 102\nScottsdale, AZ 85260", 
"3252 Vilas Rd\nCottage Grove, WI 53527", "224 W Cottage Grove Rd\nCottage Grove, WI 53527",
"320 W Cottage Grove Rd\nCottage Grove, WI 53527", "7914 State Road 19\nDane, WI 53529",
"106 Dane St\nDane, WI 53529")

关于regex - 为什么这个正则表达式不能在 R 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33817849/

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