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
...
...