【发布时间】:2019-05-04 13:35:57
【问题描述】:
我有一个字符串集合,我需要创建一个正则表达式模式来过滤掉重复字符只出现两次的字符串。
例如:Arrays.asList("abcdef","bababc","abbcde","abcccd","aabcdd","abcdee","ababab");
在这里,我想得到["bababc","abbcde","aabcdd","abcdee"]的结果
所以重复字符可以是连续字符或中间字符。但是重复字符两次优先于任何其他重复计数
例如:"bababc" ,其中'a' 重复两次,'b' 重复三次,因为'a' 重复两次它符合过滤条件。
我尝试了提到的不同模式
有人可以帮我吗?
【问题讨论】:
-
是的,我需要从列表中排除“abcdef”
-
为什么输出中有'bababc'? 'b' 的计数为 3。这是否意味着此处的 'a' 计数为 2 优先?
-
是的 char count count of 2 优先,抱歉我更新了问题
-
我无法在这里想象一个纯粹的正则表达式方法,因为您需要在当前检查的字符之前检查重复字符。
-
我认为您发布的第二个选项有效 - 如果您愿意事先对字符串进行排序。只需将计数设置为 {2} 而不是 {2,}。但是,如果您要先对其进行排序,那么您不妨创建一个函数来解析它。编辑:再想一想,这不适用于重复 3 及以上的字符串,但如果没有重复 2,仍然会被捕获