【问题标题】:R string matching and replaceR字符串匹配和替换
【发布时间】:2019-02-20 00:15:32
【问题描述】:

从字符串-theta[0] * x[0] * x[4] -theta[1] * x[1] 开始,我想捕获theta[.] 并替换为exp(theta[.]),最终结果为:

-exp(theta[0]) * x[0] * x[4] -exp(theta[1]) * x[1]

如何在 R 中实现这一点?

我通过as之间的匹配尝试了以下测试:

p <- c("abba", "abcdab")                                                      
gsub("\\(a[^a]*a\\)", "|\\1|", p)

我希望输出类似于

|abba|
|abcda|b

但是输出是

[1] "abba"   "abcdab"

实现预期结果的正确正则表达式是什么?

提前致谢。

【问题讨论】:

    标签: r regex


    【解决方案1】:

    我们可能会使用

    gsub("(theta\\[\\d+\\])", "exp(\\1)", "-theta[0] * x[0] * x[4] -theta[1] * x[1]")
    # [1] "-exp(theta[0]) * x[0] * x[4] -exp(theta[1]) * x[1]"
    

    它将theta[.]. 的任意位数相匹配,并将其替换为exp(theta[.])

    您的尝试很好,您只是不需要转义括号,因为它们表示您稍后要引用的组:

    gsub("(a[^a]*a)", "|\\1|", p)
    # [1] "|abba|"   "|abcda|b"
    

    【讨论】:

      猜你喜欢
      • 2016-09-14
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      相关资源
      最近更新 更多