gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:59:31 24 4
gpt4 key购买 nike

通常在 R 中,可以在带有两个斜杠的正则表达式中使用元字符,例如( 变成\(,但我发现方括号不是这样。

mystring <- "abc[de"

#remove [,] and $ characters

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

[1] "abc[de"
[[:punct:]]工作,但我讨厌使用非标准的正则表达式,如果我不需要的话。可以使用正则表达式集语法吗?

最佳答案

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

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

或者,您可以在放置时使用“智能放置” ]在括号表达式的开头( [ 在里面并不特殊,没有必要在那里转义 [):
gsub("[][$]","",mystring)

demo

结果:
[1] "abcde"

更多详情
[...]构造被认为是 bracket expression由 TRE 正则表达式引擎(在基本 R 正则表达式函数中默认使用 - (g)sub, grep(l), (g)regexpr - 当在没有 perl=TRUE 的情况下使用时),这是一个 POSIX 正则表达式构造。括号表达式,不像 character classes在 NFA 正则表达式引擎中,不支持转义序列,即 \ char 被视为它们内部的文字反斜杠字符。

因此, [\[\]]在 TRE 正则表达式中匹配 \[ char (其中 [\[\] 部分实际上等于 [\[] ),然后是 ] .所以,它匹配 \][]子串,看看 gsub("[\\[\\]]", "", "[]\\]ab]") demo - 它输出 ab]因为 []\]匹配并最终删除。

请注意,术语 POSIX 括号表达式和 NFA 字符类的使用含义与 https://www.regular-expressions.info 中使用的含义相同。 ,它不是一个标准,但需要区分两者。

关于R中矩形括号的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29993089/

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