String applyPatternRepeatedly(@Nonnull Pattern pattern, @Nonnull String filename, @Nonnull Function<String, Character> converter) { StringBuilder id = new StringBuilder(); int beginIndex = 0; Matcher matcher = pattern.matcher(filename); while (matcher.find()) { String group = matcher.group(); id.append(filename, beginIndex, matcher.start()); id.append(converter.apply(group)); beginIndex = matcher.end(); } id.append(filename.substring(beginIndex)); return id.toString(); }
@Override boolean parse(final FastDateParser parser, final Calendar calendar, final String source, final ParsePosition pos, final int maxWidth) { final Matcher matcher = pattern.matcher(source.substring(pos.getIndex())); if (!matcher.lookingAt()) { pos.setErrorIndex(pos.getIndex()); return false; } pos.setIndex(pos.getIndex() + matcher.end(1)); setCalendar(parser, calendar, matcher.group(1)); return true; }
public Set<String> getCardNumbersFromComment() { Set<String> cardNumbers = new TreeSet<>(); Pattern pattern = Pattern.compile("#(\\d+)"); String comment = this.comment == null ? "" : this.comment; Matcher matcher = pattern.matcher(comment); while (hasMatch(matcher)) { cardNumbers.add(id(matcher)); matcher.end(); } return cardNumbers; }
public static void printMatches(String text, String regex) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); // Check all occurrences while (matcher.find()) { System.out.print("Start index: " + matcher.start()); System.out.print(" End index: " + matcher.end()); System.out.println(" Found: " + matcher.group()); } }
Matcher typeSubtype = TYPE_SUBTYPE.matcher(string); if (!typeSubtype.lookingAt()) { throw new IllegalArgumentException("No subtype found for: \"" + string + '"'); String type = typeSubtype.group(1).toLowerCase(Locale.US); String subtype = typeSubtype.group(2).toLowerCase(Locale.US); Matcher parameter = PARAMETER.matcher(string); for (int s = typeSubtype.end(); s < string.length(); s = parameter.end()) { parameter.region(s, string.length()); if (!parameter.lookingAt()) { String name = parameter.group(1); if (name == null || !name.equalsIgnoreCase("charset")) continue; String charsetParameter;
@Override protected Result[] run(String value) { final Matcher matcher = pattern.matcher(value); if (!matcher.find() || matcher.groupCount() == 0 || matcher.start(1) == -1 || matcher.end(1) == -1) { return null; } return new Result[] { new Result(value.substring(matcher.start(1), matcher.end(1)), matcher.start(1), matcher.end(1)) }; }
private static List<KerberosRule> parseRules(String defaultRealm, List<String> rules) { List<KerberosRule> result = new ArrayList<>(); for (String rule : rules) { Matcher matcher = RULE_PARSER.matcher(rule); if (!matcher.lookingAt()) { throw new IllegalArgumentException("Invalid rule: " + rule); } if (rule.length() != matcher.end()) throw new IllegalArgumentException("Invalid rule: `" + rule + "`, unmatched substring: `" + rule.substring(matcher.end()) + "`"); if (matcher.group(2) != null) { result.add(new KerberosRule(defaultRealm)); } else { result.add(new KerberosRule(defaultRealm, Integer.parseInt(matcher.group(5)), matcher.group(6), matcher.group(8), matcher.group(10), matcher.group(11), "g".equals(matcher.group(12)), "L".equals(matcher.group(13)))); } } return result; }
@Override public void describeTo(Description description) { java.util.regex.Matcher arg = ARG_PATTERN.matcher(descriptionTemplate); int textStart = 0; while (arg.find()) { description.appendText(descriptionTemplate.substring(textStart, arg.start())); description.appendValue(values[parseInt(arg.group(1))]); textStart = arg.end(); } if (textStart < descriptionTemplate.length()) { description.appendText(descriptionTemplate.substring(textStart)); } }
private static List<Rule> parseRules(List<String> rules) { rules = joinSplitRules(rules); List<Rule> result = new ArrayList<>(); for (String rule : rules) { Matcher matcher = RULE_PARSER.matcher(rule); if (!matcher.lookingAt()) { throw new IllegalArgumentException("Invalid rule: " + rule); } if (rule.length() != matcher.end()) { throw new IllegalArgumentException("Invalid rule: `" + rule + "`, unmatched substring: `" + rule.substring(matcher.end()) + "`"); } if (matcher.group(2) != null) { result.add(new Rule()); } else { result.add(new Rule(matcher.group(5), matcher.group(6), "L".equals(matcher.group(7)), "U".equals(matcher.group(7)))); } } return result; }
public static FeatureTemplate create(String template) { FeatureTemplate featureTemplate = new FeatureTemplate(); featureTemplate.delimiterList = new LinkedList<String>(); featureTemplate.offsetList = new ArrayList<int[]>(3); featureTemplate.template = template; Matcher matcher = pattern.matcher(template); int start = 0; while (matcher.find()) { featureTemplate.delimiterList.add(template.substring(start, matcher.start())); start = matcher.end(); featureTemplate.offsetList.add(new int[]{Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2))}); } return featureTemplate; }
@Override boolean parse(final FastDateParser parser, final Calendar calendar, final String source, final ParsePosition pos, final int maxWidth) { final Matcher matcher = pattern.matcher(source.substring(pos.getIndex())); if (!matcher.lookingAt()) { pos.setErrorIndex(pos.getIndex()); return false; } pos.setIndex(pos.getIndex() + matcher.end(1)); setCalendar(parser, calendar, matcher.group(1)); return true; }
/** * Expand URI template variables in the target URL with either model * attribute values or as a fallback with URI variable values from the * current request. Values are encoded. */ protected StringBuilder expandTargetUrlTemplate(String targetUrl, Map<String, Object> model, Map<String, String> uriVariables) { Matcher matcher = URI_TEMPLATE_VARIABLE_PATTERN.matcher(targetUrl); boolean found = matcher.find(); if (!found) { return new StringBuilder(targetUrl); } StringBuilder result = new StringBuilder(); int endLastMatch = 0; while (found) { String name = matcher.group(1); Object value = (model.containsKey(name) ? model.get(name) : uriVariables.get(name)); Assert.notNull(value, () -> "No value for URI variable '" + name + "'"); result.append(targetUrl.substring(endLastMatch, matcher.start())); result.append(encodeUriVariable(value.toString())); endLastMatch = matcher.end(); found = matcher.find(); } result.append(targetUrl.substring(endLastMatch, targetUrl.length())); return result; }
@Override boolean parse(final FastDateParser parser, final Calendar calendar, final String source, final ParsePosition pos, final int maxWidth) { final Matcher matcher = pattern.matcher(source.substring(pos.getIndex())); if (!matcher.lookingAt()) { pos.setErrorIndex(pos.getIndex()); return false; } pos.setIndex(pos.getIndex() + matcher.end(1)); setCalendar(parser, calendar, matcher.group(1)); return true; }
public static List<String> extractMessageIds(final String text) { List<String> messageIds = new ArrayList<>(); Matcher matcher = MESSAGE_ID.matcher(text); int start = 0; while (matcher.find(start)) { String messageId = text.substring(matcher.start(), matcher.end()); messageIds.add(messageId); start = matcher.end(); } return messageIds; }
@Override public void describeTo(Description description) { java.util.regex.Matcher arg = ARG_PATTERN.matcher(descriptionTemplate); int textStart = 0; while (arg.find()) { description.appendText(descriptionTemplate.substring(textStart, arg.start())); description.appendValue(values[parseInt(arg.group(1))]); textStart = arg.end(); } if (textStart < descriptionTemplate.length()) { description.appendText(descriptionTemplate.substring(textStart)); } }