R中的矩形括号的正则表达式

时间:2015-05-01 18:46:02

标签: regex r

传统上在R中,可以在具有两个斜杠的正则表达式中使用元字符,例如(变成\(,但我发现方括号不一样。

mystring <- "abc[de"

#remove [,] and $ characters

gsub("[\\[\\]$]","",mystring)

[1] "abc[de"

[[:punct:]]有效,但如果我不需要,我讨厌使用非标准的正则表达式。可以使用正则表达式集语法吗?

3 个答案:

答案 0 :(得分:5)

你应该启用perl = TRUE,然后你可以使用类似Perl的语法,这更直接(恕我直言):

gsub("[\\[\\]$]","",mystring, perl = TRUE)

请参阅demo

结果:

[1] "abcde"

答案 1 :(得分:4)

我会回避var parametersToAdd = new System.Collections.Generic.Dictionary<string, string> { { "resource", "foo" } }; var someUrl = "http://www.google.com"; var newUri = Microsoft.AspNetCore.WebUtilities.QueryHelpers.AddQueryString(someUrl, parametersToAdd); 语法并使用[ab]。除了工作,它也可能更具可读性:

(a|b)

答案 2 :(得分:1)

你可以使用\\[作为匹配的东西,除非你匹配多个选项,否则你不需要额外的方括号:

> mystring <- 'abc[de'
> gsub("\\[", "", mystring)
[1] "abcde"

通过使用fixed=TRUE取消特殊含义,您可以使单个字符变得更简单,更快:

> mystring <- 'abc[de'
> gsub("[", "", mystring, fixed=TRUE)
[1] "abcde"

或者如果方括号内的第一个东西是方括号(未转义),则它们被视为文字字符,而不是具有通常的特殊含义:

> mystring <- 'a,bc[d]e$'
> gsub("[][,$]", "", mystring)
[1] "abcde"