我需要在[],
之间加密文字我有这个:
x <- "corp_applicaiton[CORP_webapp1][1]"
我需要捕捉这段文字:
CORP_webapp1][1
然后将所有特殊字符替换为低分:
我试过这个:
str_match(x, ".*\\[(.*?)].*")[,2]
但是输出:
1
任何想法?
答案 0 :(得分:0)
您可以使用正则表达式执行此操作。
x<-c("corp_applicaiton[CORP_webapp1][1]")
x2 = sub(".*?\\[(.*)\\].*", "\\1", x)
gsub("\\W", "_", x2)
[1] "CORP_webapp1__1"
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以通过单个gsubfn
实现所需,但仍需要2个正则表达式:
> library(gsubfn)
> x<-c("corp_applicaiton[CORP_webapp1][1]")
> gsubfn("^[^[]*\\[(.*)].*$", function(m) gsub("\\W", "_", m), x)
[1] "CORP_webapp1__1"
它将寻找以下模式:
^
- 字符串开头[^[]*
- 除[
\\[
- 文字[
(.*)
- 第1组尽可能多地捕获任何0+字符... ]
- 文字]
.*
- 以及字符串结尾的任何0+字符。然后,内置gsub("\\W", "_", m)
的嵌套回调函数将使用Group 1值中的(\W
替换每个非单词char _
},并且只返回该值。 / p>