private void narrowDownPossibleFormats(String leadingDigits) { int indexOfLeadingDigitsPattern = leadingDigits.length() - MIN_LEADING_DIGITS_LENGTH; Iterator <NumberFormat> it = possibleFormats.iterator(); while (it.hasNext()) { NumberFormat format = it.next(); if (format.leadingDigitsPatternSize() > indexOfLeadingDigitsPattern) { Pattern leadingDigitsPattern = regexCache.getPatternForRegex( format.getLeadingDigitsPattern(indexOfLeadingDigitsPattern)); Matcher m = leadingDigitsPattern.matcher(leadingDigits); if (!m.lookingAt()) { it.remove(); } } // else the particular format has no more specific leadingDigitsPattern, and it should be // retained. } }
[TestMethod] public void testRegexInsertion() { String regex1 = "[1-5]"; String regex2 = "(?:12|34)"; String regex3 = "[1-3][58]"; regexCache.getPatternForRegex(regex1); assertTrue(regexCache.containsRegex(regex1)); regexCache.getPatternForRegex(regex2); assertTrue(regexCache.containsRegex(regex2)); assertTrue(regexCache.containsRegex(regex1)); regexCache.getPatternForRegex(regex1); assertTrue(regexCache.containsRegex(regex1)); regexCache.getPatternForRegex(regex3); assertTrue(regexCache.containsRegex(regex3)); assertFalse(regexCache.containsRegex(regex2)); assertTrue(regexCache.containsRegex(regex1)); }