我有一个字符串(或NAs)的向量s
,并希望在第一次出现punction(.
)之前得到一个长度相同的向量。
s <- c("ABC1.2", "22A.2", NA)
我想得到一个结果:
[1] "ABC1" "22A" NA
答案 0 :(得分:2)
您可以使用以下类似Perl的正则表达式从第一个点删除所有符号(包括换行符):
s <- c("ABC1.2", "22A.2", NA)
gsub("[.][\\s\\S]*$", "", s, perl=T)
## => [1] "ABC1" "22A" NA
请参阅IDEONE demo
正则表达式匹配
[.]
- 一个文字点[\\s\\S]*
- 包含任何符号新行$
- 字符串结束。使用""
从输入中删除所有匹配的字符串。当正则表达式引擎从左到右分析字符串时,第一个点与\\.
匹配,而带有*
的贪婪[\\s\\S]
量词将匹配所有直到字符串结尾。< / p>
如果没有换行符,则会使用更简单的正则表达式:[.].*$
:
gsub("[.].*$", "", s)
请参阅another demo