【发布时间】:2023-03-16 05:52:01
【问题描述】:
我有一个字符向量,我想在其中匹配第一个和最后一个部分,以便生成匹配字符列表。
这是一个示例字符:"20190625_165055_0f4e"
第一部分是日期。最后 4 个字符是唯一标识符。我需要列表中这两个部分重复的所有字符。
我可以使用一个简单的正则表达式来根据位置匹配字符,但有些中间字符比其他字符多,例如"20190813_170215_17_1057"
这是一个示例向量:
mylist<-c("20190712_164755_1034","20190712_164756_1034","20190712_164757_1034","20190719_164712_1001","20190719_164713_1001","20190722_153110_1054","20190813_170215_17_1057","20190813_170217_22_1057","20190828_170318_14_1065")
这是所需的输出:
c("20190712_164755_1034","20190712_164756_1034","20190712_164757_1034")
c("20190719_164712_1001","20190719_164713_1001")
c("20190722_153110_1054")
c("20190813_170215_17_1057","20190813_170217_22_1057")
c("20190828_170318_14_1065")
编辑:使我的字符向量更简单并添加了所需的输出
【问题讨论】:
-
您好 APD,如果下面的答案不能解决您的问题,我同意 akrun 的观点,如果您提供一些预期的输出会更容易提供帮助。
-
那是我原来的答案
split(mylist, sub("^(\\d+)_.*_([^_]+)$", "\\1_\\2", mylist)) -
以下 Ruby 代码可以做到,如果有人想将其翻译成 R:
arr.group_by { |s| [s[0,8], s[-4,-2]] }.values。
标签: r regex character matching