【发布时间】:2016-12-14 10:41:10
【问题描述】:
我们来看一个例子:
abc_def_ghi_jkl
如果我选择n = 1,我希望输出为:
group1 = abc_def_ghi
group2 = jkl
如果我选择n = 2,我希望输出为:
group1 = abc_def
group2 = ghi_jkl
注意:将两个组分开的_ 被删除。
现在我只知道如何选择最后一组,但它也选择了_:
(?:.(?!(?=\_)))+$
注意 2:我目前专注于正则表达式部分,但它是用于 R 的代码,如果它有助于找到解决方案。
【问题讨论】:
-
是否有使用正则表达式的特定原因?对我来说,在
'_'上使用strsplit,然后使用paste(..., collapse = '_')似乎是解决这个特定示例的更简单的解决方案。 -
如此简单... 3 小时,我以错误的方式看待问题。谢谢 !但是我仍然很想了解更多关于正则表达式的信息,所以如果有人有答案:)
-
嗯,可以有一个基于正则表达式的答案来匹配组,比如
^(.*?)_((?:_?[^_]+){3})$。替换{...}中的数字以获取您需要的部件。只是当您使用超出范围的数字时,行为可能会变得很奇怪。 -
感谢您的建议,我将永远不必得到一个与
_的号码不匹配的号码,因为我会一步一步地进行,直到第一组匹配某个值,但我'请记住这一点。