gpt4 book ai didi

r - 仅提取字符串中的 5 位数字

转载 作者:行者123 更新时间:2023-12-01 09:15:23 25 4
gpt4 key购买 nike

我有一个地址,81000 是邮政编码(总是 5 位数字)。

address <- "F47, First Floor, PTD 106273, Persiaran Indahpura Utama, Bandar Indahpura, 81000 Kulaijaya, Johor"

我正在尝试使用 regex 确定邮政编码,并尝试了以下方法:

## postal code pattern
postal_pattern <- '\\d{5}'
## extract postal code
postal_code <- stringr::str_extract_all(address, postal_pattern)

但是,我得到了以下输出,部分正确:

> postal_code
[[1]]
[1] "10627" "81000"

我怎样才能只使用 regex 或任何库提取 81000

最佳答案

我建议从字符串中提取最后一个 5位数字:

> str_replace(address, ".*\\b(\\d{5})\\b.*", "\\1")
[1] "81000"

或使用基础 R sub:

> sub(".*\\b(\\d{5})\\b.*", "\\1", address)
[1] "81000"

由于 .* 匹配所有字符串(行),然后开始回溯以适应后续模式,因此 \d{5} 将匹配最后一个5 位数字(作为一个完整的单词)。

详情

  • .* - 任何 0 个或多个字符(除了 stringr 版本中的换行符,在模式前加上 (?s) 如果你也需要匹配换行符),尽可能多地匹配到最后出现的后续子模式
  • \\b - 前导字边界(前导,因为后面的预期字符是数字)
  • (\\d{5}) - 第 1 组:五位数字
  • \\b - 尾随单词边界
  • .* - 字符串的其余部分(在 stringr 版本中,如果需要,请在模式前加上 (?s)也匹配换行符)

关于r - 仅提取字符串中的 5 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45914167/

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