我已经查看过类似于我的大量正则表达式问题,但是当我替换他们感兴趣的值(例如逗号)时,所有这些问题看起来都非常复杂或不起作用我对匹配(下划线)感兴趣。
基本上,我想仅匹配以下示例中每行的第一个下划线:
据我所知,
_+?
应该工作,但不是。仍然匹配所有。同样的
_{1}
也应该有效,但它匹配所有,而不仅仅是量词指定的第一个。
示例:
armsling_R_1_Group
armsling_R_1_Rank
armsling_R_2_Group
armsling_R_2_Rank
armsling_R_3_Group
armsling_R_3_Rank
armsling_R_4_Group
armsling_R_4_Rank
armsling_C_1
armsling_F_1
armsling_T_1
armsling_T_2
armsling_T_3
armsling_T_4
编辑:这是针对R代码的,但我一直在使用regexr.com来测试我的表达式
答案 0 :(得分:1)
我尝试使用
separate()
中的tidyr
将这些值(在一列中)分成两列。如果我只使用下划线,它也会查看以下内容。
根据发布的答案中的评论,以下内容适合您。
library(tidyr)
separate(x, y, c('icon', 'measure'), '_', extra = 'merge')
# icon measure
# 1 armsling R_1_Group
# 2 armsling R_1_Rank
# 3 armsling R_2_Group
...
...
对于正则表达式解决方案,我会使用gsubfn包中的strapply
:
m <- strapply(as.character(x$y), '([^_]*)_(.*)',
~ c(icon = x, measure = y), simplify = rbind)
X <- as.data.frame(m, stringsAsFactors = FALSE)
# icon measure
# 1 armsling R_1_Group
# 2 armsling R_1_Rank
# 3 armsling R_2_Group
...
...