我有一组字符串,如下所示。每个字符串有3个数字,用下划线(_)分隔。每个数字都是1到100之间的值。
ma_1_1_1
ma_2_100_59
ma_29_29_29
ma_100_100_100
ma_7_72_78
ma_10_10_100
ma_4_4_49
我想写一个正则表达式,我可以得到数字相同的字符串。例如,我的输出将是
ma_1_1_1,ma_29_29_29和ma_100_100_100
答案 0 :(得分:5)
答案 1 :(得分:3)
使用反向引用使正则表达式再次匹配前一个组:
ma_(100|[1-9][0-9]?)_\1_\1\b
这也将验证数字是否在范围内。如果不需要此验证,请使用(\d+)
作为捕获组。
答案 2 :(得分:0)
这个答案是对@ 4castle的修改,它只会提取具有相似数字的字符串。
grep("ma_(100|[0-9][0-9]|[0-9])(_\\1)(_\\1)\\b", stringList, value = T)