Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式:仅匹配值的第一个实例_Regex_R - Fatal编程技术网

Regex 正则表达式:仅匹配值的第一个实例

Regex 正则表达式:仅匹配值的第一个实例,regex,r,Regex,R,我已经浏览了大量与我类似的正则表达式问题,但当我将他们感兴趣的值(例如逗号)替换为我感兴趣的匹配值(下划线)时,这些问题似乎都非常复杂或不起作用 基本上,我只想匹配以下示例中每行的第一个下划线: 据我所知, \uuu+? 应该行,但不行。仍然匹配所有。同样适用于 {1} 也应该有效,但它匹配所有,而不仅仅是量词指定的第一个 例如: armsling_R_1_Group armsling_R_1_Rank armsling_R_2_Group armsling_R_2_Rank armsl

我已经浏览了大量与我类似的正则表达式问题,但当我将他们感兴趣的值(例如逗号)替换为我感兴趣的匹配值(下划线)时,这些问题似乎都非常复杂或不起作用

基本上,我只想匹配以下示例中每行的第一个下划线:

据我所知,
\uuu+?
应该行,但不行。仍然匹配所有。同样适用于
{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测试我的表达式

我试图使用
tidyr
中的
separate()
将这些值(在一列中)分成两列。如果我只使用下划线,它也会显示以下内容

根据贴出的答案中的评论,以下内容应该适合您

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
...
...
对于正则表达式解决方案,我将使用包中的
stripply


m您运行的是哪种语言/工具?这是R代码,但我一直在用它来测试我的表达式。谢谢!我真后悔自己没看到。这解决了我眼前的问题,但如果有人知道如何在Regex中做到这一点,我仍然非常想知道这是否有可能对我自己有所启发。
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
...
...