【问题标题】:R regex gsub separate letters and numbersR regex gsub 分隔字母和数字
【发布时间】:2012-07-23 01:54:39
【问题描述】:

我有一个混合了字母和数字的字符串:

"The sample is 22mg"

我想拆分字符串,其中一个数字后面紧跟这样的字母:

"The sample is 22 mg"

我试过了:

gsub('[0-9]+[[aA-zZ]]', '[0-9]+ [[aA-zZ]]', 'This is a test 22mg')

但没有得到想要的结果。

有什么建议吗?

【问题讨论】:

    标签: regex r gsub stringr


    【解决方案1】:

    您需要在正则表达式中使用捕获括号并在替换中使用组引用。例如:

    gsub('([0-9])([[:alpha:]])', '\\1 \\2', 'This is a test 22mg')
    

    这里没有特定于 R 的东西; regexgsub 的 R 帮助应该有一些用处。

    【讨论】:

      【解决方案2】:

      你需要反向引用:

      test <- "The sample is 22mg"
      > gsub("([0-9])([a-zA-Z])","\\1 \\2",test)
      [1] "The sample is 22 mg"
      

      括号中的任何内容都会被记住。然后通过 \1(对于括号中的第一个实体)、\2 等来访问它们。第一个反斜杠在 R 中转义了反斜杠的解释,以便将其传递给正则表达式解析器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-17
        相关资源
        最近更新 更多