首页 > 解决方案 > R:正则表达式 \\s 不是空格

问题描述

我只是想知道为什么选项的\\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。

标签: rregex

解决方案


就像我在评论中说的那样,你的最后一个正则表达式中有三个方括号,只有两个是必需的。
以下任何一项都可以满足您的要求。

sub("[a-z[:space:]]+[a-z]+","it works","abcd xyz")
sub("[[:lower:][:space:]]+[[:lower:]]+","it works","abcd xyz")
#[1] "it works"

推荐阅读