gpt4 book ai didi

regex - R:通过正则表达式提取字符串匹配部分的列表

转载 作者:行者123 更新时间:2023-12-01 16:36:40 26 4
gpt4 key购买 nike

假设我需要从一个字符串中提取不同的部分作为列表,例如我想将字符串 "aaa12xxx" 分成三部分。

一种可能性是执行三个 gsub 调用:

parts = c()
parts[1] = gsub('([[:alpha:]]+)([0-9]+)([[:alpha:]]+)', '\\1', "aaa12xxx")
parts[2] = gsub('([[:alpha:]]+)([0-9]+)([[:alpha:]]+)', '\\2', "aaa12xxx")
parts[3] = gsub('([[:alpha:]]+)([0-9]+)([[:alpha:]]+)', '\\3', "aaa12xxx")

当然这看起来很浪费(即使它在 for 循环中)。难道没有一个函数可以简单地从正则表达式和测试字符串中返回零件列表吗?

最佳答案

只需通过strsplit 拆分输入字符串即可并获得您想要的零件..

> x <- "aaa12xxx"
> strsplit(x,"(?<=[[:alpha:]])(?=\\d)|(?<=\\d)(?=[[:alpha:]])", perl=TRUE)
[[1]]
[1] "aaa" "12" "xxx"

通过指定索引号获取零件..

> m <- unlist(strsplit(x,"(?<=[[:alpha:]])(?=\\d)|(?<=\\d)(?=[[:alpha:]])", perl=TRUE))
> m[1]
[1] "aaa"
> m[2]
[1] "12"
> m[3]
[1] "xxx"
  • (?<=[[:alpha:]])(?=\\d)匹配所有以字母开头和以数字结尾的边界。

  • |或者

  • (?<=\\d)(?=[[:alpha:]])匹配所有前面是数字后面是字母的边界。

  • 根据匹配的边界拆分您的输入将为您提供所需的输出。

关于regex - R:通过正则表达式提取字符串匹配部分的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27922153/

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