【问题标题】:Extract position of "+" and "*" symbol in string using R使用R提取字符串中“+”和“*”符号的位置
【发布时间】:2021-12-27 20:31:47
【问题描述】:

我正在寻找一种方法来提取“*”和“+”符号在 R 字符串中的位置。

test <- "x+y"
unlist(gregexpr("+", test))
[1] 1 2 3
unlist(gregexpr("y", test))
[1] 3

它返回 x 或 y 的位置,但返回 + 或 * 的所有位置。

谢谢!

【问题讨论】:

  • 因为你是unlisting你的结果,看起来你每行只有一个表达式,因此使用regexpr而不是gregexpr。对于+ 符号,您只需将其转义,因为它是一个元字符:regexpr('\\+', test)
  • 另一种转义方式是[+],它是regex 中的“字符类”;这对于[*] 也是必要的。使用它,您可以使用[+*] 查找 either(不区分)。

标签: r regex string symbols


【解决方案1】:

使用fixed = TRUE,默认为FALSE,并使用+是元字符的正则表达式模式。根据?regex

+ - 前一项将被匹配一次或多次。

* - 前面的项目将匹配零次或多次。

unlist(gregexpr("+", test, fixed = TRUE))
[1] 2

【讨论】:

  • 感谢您的解释!
【解决方案2】:

其他一些基本 R 解决方法

> which(unlist(strsplit(test, "")) == "+")
[1] 2

> which(utf8ToInt(test) == utf8ToInt("+"))
[1] 2

【讨论】:

  • 这个解决方案比另一个更快。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多