我只是想知道为什么\\s
在选项的括号[]
中不起作用,但是空白有效吗?这是一个示例:
sub("[a-z ]+[a-z]+","it works","abcd xyz")
# [1] "it works
这就是我想要的。但是如果我使用\\s
,我会得到:
sub("[a-z\\s]+[a-z]+","it works","abcd xyz")
# [1] "it works xyz"
[[:space:]]也没有给出我想要的结果:
sub("[a-z[[:space:]]]+[a-z]+","it works","abcd xyz")
# [1] "abcd xyz"
为什么\\s
在选项括号内不起作用?
这与编程语言R有关。
答案 0 :(得分:2)
如果我们指定perl = TRUE
,它应该可以工作。默认情况下为FALSE
sub("[a-z\\s]+[a-z]+","it works","abcd xyz", perl = TRUE)
#[1] "it works"
答案 1 :(得分:2)
就像我在评论中说的那样,您的最后一个正则表达式中有三个方括号,只有两个是必需的。
以下任何一项都可以满足您的要求。
sub("[a-z[:space:]]+[a-z]+","it works","abcd xyz")
sub("[[:lower:][:space:]]+[[:lower:]]+","it works","abcd xyz")
#[1] "it works"