我在R中有以下字符串:“xxx,yyy.zz” 我想只得到yyy部分,它位于“,”和“。”之间。
我不想使用正则表达式。
我搜索了半天,在R中发现了许多字符串函数但没有处理“字符前后切割”功能。
有这样的吗?
答案 0 :(得分:3)
我们可以使用gsub
来匹配字符串的开头(,
)之后的[^,]*
(^
)的零个或多个字符,后跟一个{ {1}}后跟零个或多个空格(,
)或(\\s*
)一个点(!
- 它是一个元字符,表示任何字符,因此它被转义)后跟其他字符(\\.
)直到字符串结尾(.*
)并将其替换为空白($
)
""
如果我们不需要 gsub("^[^,]*,\\s*|\\..*$", "", str1)
#[1] "yyy"
,那么regex
字符串按strsplit
后跟零或更多空格或,
,并在转换后选择第二个条目.
输出到list
(vector
)
[[1]]
strsplit(str1, ",\\s*|\\.")[[1]][2]
#[1] "yyy"
答案 1 :(得分:1)
这可能就足够了:
unlist(strsplit("xxx, yyy. zzz","[,.]"))[2] # get yyy with space, or:
gsub(" ","",unlist(strsplit("xxx, yyy. zzz","[,.]")))[2] # remove space