All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.mmm.util.pattern.RegexInfixPatternCompiler Maven / Gradle / Ivy

The newest version!
/* $Id: RegexInfixPatternCompiler.java 369 2007-11-12 18:50:49Z hohwille $
 * Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
 * http://www.apache.org/licenses/LICENSE-2.0 */
package net.sf.mmm.util.pattern;

import java.util.regex.Pattern;

/**
 * This implementation of the {@link PatternCompiler} interface compiles the
 * pattern given as string in a way similar to GNU-utilities like
 * sed or grep. This means that if no leading "^"
 * (or ".*") or no trailing "$" (or ".*") is present, an according ".*" prefix
 * and suffix is added implicit. This causes that "\.xml$" matches "config.xml"
 * and "^/etc/" matches "/etc/passwd".
* ATTENTION:
* On the {@link Pattern#matcher(CharSequence) matcher} of the produced * {@link Pattern} you may want to use {@link java.util.regex.Matcher#find()} * instead of {@link java.util.regex.Matcher#matches()}. * * @author Joerg Hohwiller (hohwille at users.sourceforge.net) */ public class RegexInfixPatternCompiler extends RegexPatternCompiler { /** A singleton instance of this implementation. */ public static final PatternCompiler INSTANCE = new RegexInfixPatternCompiler(); /** * The constructor. */ public RegexInfixPatternCompiler() { super(); } /** * The constructor. * * @param flags are the {@link Pattern#compile(String, int) compiler flags}. */ public RegexInfixPatternCompiler(int flags) { super(flags); } /** * {@inheritDoc} */ @Override public Pattern compile(String pattern) throws IllegalArgumentException { StringBuilder buffer = new StringBuilder(pattern.length() + 4); if (!pattern.startsWith("^") && !pattern.startsWith(".*")) { buffer.append(".*"); } buffer.append(pattern); if (!pattern.endsWith("$") && !pattern.endsWith(".*")) { buffer.append(".*"); } return super.compile(buffer.toString()); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy