Regex 确定字符串是否以空格结尾,如果不是,则追加空格

Regex 确定字符串是否以空格结尾,如果不是,则追加空格,regex,r,Regex,R,我想检查字符串是否以空格结尾。如果没有,我想在字符串的末尾添加一个尾随空格字符 实际上,我检查字符串是否以带grepl的空格结尾,然后在末尾粘贴一个空格 append_space <- function(x) { if(!grepl("(\\s)$", x)) x <- paste0(x, " ") return(x) } append_space您可以将sub与捕获组和替换部件中的反向引用一起使用: sub("(\\S)$", "\\1 ", x) \S表示非空

我想检查字符串是否以空格结尾。如果没有,我想在字符串的末尾添加一个尾随空格字符

实际上,我检查字符串是否以带
grepl
的空格结尾,然后在末尾粘贴一个空格

append_space <- function(x) {
  if(!grepl("(\\s)$", x))
    x <- paste0(x, " ")
  return(x)
}

append_space您可以将
sub
与捕获组和替换部件中的反向引用一起使用:

sub("(\\S)$", "\\1 ", x)
\S
表示
非空白


如我在评论中所说,您可以尝试:

sub("(.*[^ ])$","\\1 ", x)
示例

x <- c("blabla1 ","blabla2")
sub("(.[^ ])$","\\1 ", x)
#[1] "blabla1 " "blabla2 "

x我认为这种方法可行:

x <- c("blabla1 ","blabla2")

sub("(?<=([^ ])$)$", " ", x, perl=TRUE)
## [1] "blabla1 " "blabla2 "
x您也可以尝试

 sub(' ?$', ' ', x)
 #[1] "blabla1 " "blabla2 "
在哪里


x You函数似乎会附加一个空格,而不管字符串的结尾是什么<代码>>sub(.[^\\s]),“\\1”,“string”)[1]“string”>sub(.[^\\s]),“\\1”,“string”)[1]“string”>sub(.[^\\s]),“\\1”,“string\n”)[1]“string\n”
这是因为我在注释中忘记了
$
,所以在测试我的正则表达式之后,我发布了一个答案,在那里我确实放了
$
。。。事实上,你是对的,即使是$:-(@AlexA)也有一个bug。显然[^\\s]不能对空格求反,因此必须用\\s代替。如果用括号替换括号,函数就可以工作:
sub((.*(^\\s))$,“X”,“string\n a”)
,但我不知道区别。@juliennavare,只是使用实际的空格(``)事实上,有时根本不需要把事情复杂化;-)我不认为这里需要
perl=TRUE
。@BrodieG:TRUE,我只是觉得使用perl风格更舒服。在我看来,
perl=TRUE
应该是R regex函数的默认值。@AlexA.,我同意,特别是崔有一些虫子。很好,我最喜欢这个+1.
 x <- c("blabla1 ", "blabla2")