gpt4 book ai didi

regex - 提取字符串中括号之间的数字

转载 作者:行者123 更新时间:2023-12-04 22:22:38 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Extract info inside all parenthesis in R (regex)



我从 excel 导入数据,一个单元格由这些包含数字和字母的长字符串组成,有没有办法只从该字符串中提取数字并将其存储在一个新变量中?不幸的是,有些条目有两组括号,我只想要第二组?我可以为此使用 grep 吗?

字符串看起来或多或少像这样,但是字符串的长度各不相同:
"East Kootenay C (5901035) RDA 01011"

或者像这样:
"Thompson-Nicola J (Copper Desert Country) (5933039) RDA 02020"

我想要的只是 59010355933039
任何提示和帮助将不胜感激。

最佳答案

有许多可能的正则表达式可以做到这一点。这是一个:

x=c("East Kootenay C (5901035) RDA 01011","Thompson-Nicola J (Copper Desert Country) (5933039) RDA 02020")

> gsub('.+\\(([0-9]+)\\).+?$', '\\1', x)
[1] "5901035" "5933039"

让我们分解第一个表达式 '.+\\(([0-9]+)\\).+' 的语法
  • .+一项或多项
  • \\(括号是正则表达式中的特殊字符,所以如果我想代表实际的东西(我需要用 \ 来逃避它.我必须再次为 R 转义它(因此有两个 \ s)。
  • ([0-9]+)我提到了特殊字符,这里我用了两个。第一个是括号,表示我想保留的组。第二个[]围绕事物组。见 ?regex想要查询更多的信息。
  • ?$最后一部分确保我正在获取注释中指出的括号中的最后一组数字。

  • 我也可以使用 *而不是 .这意味着 0 或更多而不是一个或多个 i 以防您的paren字符串出现在字符串的开头或结尾。

    第二件 gsub是我要替换的第一部分。我用过: \\1 .这表示使用组 1(上面的 ( ) 中的内容。我需要再次将其转义两次,一次用于正则表达式,一次用于 R。

    确保像泥一样清除!享受您的数据处理项目!

    关于regex - 提取字符串中括号之间的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735503/

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