我想要在一个字符串中移除空格后的所有内容。
例如:
"my string is sad"
应该返回
"my"
我一直在尝试使用sub/gsub来做这件事,但到目前为止还没有成功。
您可以使用正则表达式,例如
sub(" .*", "", x)
请查看正则表达式演示。
在这里,sub
只会执行一次搜索和替换操作。模式.*
将找到第一个空格(因为正则表达式引擎从左到右搜索字符串),并匹配任何零个或多个字符(在TRE正则表达式中,甚至包括换行符,当使用perl=TRUE
时,请注意这种情况不适用)尽可能多地匹配,直到字符串结束。
一些变化:
sub("[[:space:]].*", "", x) # \s or [[:space:]] will match more whitespace chars
sub("(*UCP)(?s)\\s.*", "", x, perl=TRUE) # PCRE Unicode-aware regex
stringr::str_replace(x, "(?s) .*", "") # (?s) will force . to match any chars
请查看在线 R 演示。
strsplit("my string is sad"," ")[[1]][1]
gsub(' [A-z ]*', '' , 'my string is sad')
并且还包括数字:
gsub('([0-9]+) .*', '\\1', c('c123123123 0320.1'))
如果您想使用正则表达式来完成:
gsub('([A-z]+) .*', '\\1', 'my string is sad')
sub("(*UCP)(?s)\\s.*", "", x, perl=TRUE)
这个变体。很高兴发现它可以在其他变体失败的情况下起作用。 - Pake