![JAR search and dependency download from the Maven repository](/logo.png)
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