gpt4 book ai didi

R 正则表达式 : isolate parenthesized suffix

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

我在 R 中使用正则表达式。我试图找出字符向量中某些字符串末尾带括号的内容。我能够在括号内的内容存在时找到它,但我无法在没有括号的输入中排除非括号内的内容。

例子:

> x <- c("DECIMAL", "DECIMAL(14,5)", "RAND(1)")
> gsub("(.*?)(\\(.*\\))", "\\2", x)
[1] "DECIMAL" "(14,5)" "(1)"

输出中的最后两个元素是正确的,第一个不是。我要

c("", "(14,5)", "(1)")

在括号内容之前,输入可以有任何内容,字面意思是任何单词或数字字符。

最佳答案

你可以使用

sub("^.*?(\\(.*\\))?$", "\\1", x, perl=TRUE)

参见 regex demo . 详细信息:

  • ^ - 字符串开始
  • .*? - 除换行符以外的任何零个或多个字符(因为它是 PCRE 正则表达式,请参阅 perl=TRUE)尽可能少
  • (\\(.*\\))? - 可选组 1:a ( ,然后是除换行符以外的任何零个或多个字符,尽可能多,然后是 )
  • $ - 字符串结束。

参见 R demo :

x <- c("DECIMAL", "DECIMAL(14,5)", "RAND(1)")
sub("^.*?(\\(.*\\))?$", "\\1", x, perl=TRUE)
## => [1] "" "(14,5)" "(1)"

注意:perl=TRUE在这种情况下非常重要,因为正则表达式中的两个部分具有不同贪婪度的量词。

关于R 正则表达式 : isolate parenthesized suffix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65780060/

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