【发布时间】:2016-04-06 10:23:26
【问题描述】:
我正在尝试对向量的元素进行子串化,以仅保留 FIRST 下划线之前的部分。我是一个使用子字符串的新手,还没有完全理解所有的正则表达式。我接近答案,我可以得到我想删除的部分,但仍然看不到如何得到相反的部分。感谢您对正则表达式的任何帮助和/或解释!
我的向量如下所示,在某些元素中有多个下划线
v = c("WL_Alk", "LQ_Frac_C_litter_origin", "MI_Nr_gat", "SED_C_N", "WL_CO2", "WL_S")
我想要的输出看起来像
v_short = c("WL", "LQ", "MI", "SED", "WL", "WL")
获取我想要删除的部分的代码是sub("^[^_]*", "", v)。我想我必须在正则表达式中对 $ 做一些事情,因为sub("[_$]", "", v) 删除了第一个下划线,但我无法让它删除它后面的部分。即使使用正则表达式帮助文件,我还没有完全理解 ^、$ 和 * 的含义,因此也非常感谢您的解释!
【问题讨论】:
-
好吧,无论如何,我的回答显示了如何真正保留,而不仅仅是删除“字符串”之后的部分。 R removing everything after a string in a data frame column with missing values 只详述了不必要的字符串块删除方法。
-
对不起,我之前找不到那个(重复的)问题,那个问题也很有帮助!我只发现其他没有解释正则表达式并且与我的问题不完全匹配的人。
-
这是因为该问题的标题离题了。你知道,一个好的标题意味着更多的OP声誉。还请考虑将您的更改为 Regex 匹配从字符串开头到第一个下划线的所有字符,或类似的东西。其他人会寻找的东西。
-
@WiktorStribiżew:好标题!我一直在与那些斗争