gpt4 book ai didi

正则表达式在括号之间挑选一些文本

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

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




8年前关闭。




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



我有一个字符串

df
Peoplesoft(id-1290)

例如,我喜欢捕捉括号之间的字符。我喜欢从上面的例子中得到 id-1290。

我用过这个:
x <- regexpr("\\((.*)\\)", df) 

这给了我这样的数字
[1] 10

有没有一种简单的方法可以在 R 中使用正则表达式在括号之间抓取文本?

最佳答案

我更喜欢使用 gsub()为了这:

gsub(".*\\((.*)\\).*", "\\1", df)
[1] "id-1290"

正则表达式的工作方式如下:
  • 在括号内查找文本 - 不是您真正的括号,而是我额外的一组括号,即 (.*)
  • 将此作为反向引用返回,\\1

  • 换句话说,用反向引用替换字符串中的所有文本

    如果您想使用 regexp而不是 gsub ,然后这样做:
    x <- regexpr("\\((.*)\\)", df)
    x

    [1] 11
    attr(,"match.length")
    [1] 9
    attr(,"useBytes")
    [1] TRUE

    这将返回值 11,即找到的表达式的起始位置。并注意属性 match.length表示匹配了多少个字符。

    您可以使用 attr 提取此信息:
    attr(x, "match.length")
    [1] 9

    然后使用 substring提取字符:
    substring(df, x+1, x+attr(x, "match.length")-2)
    [1] "id-1290"

    关于正则表达式在括号之间挑选一些文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498843/

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