/* Copyright (c) 1996-2007 Ariba, Inc. All rights reserved. Patents pending. $Id: //ariba/platform/util/core/ariba/util/core/RegexFunction.java#1 $ Responsible: dfinlay */ package ariba.util.core; import java.util.regex.Pattern; import java.util.regex.Matcher; /** @aribaapi ariba */ public class RegexFunction extends Function<String> { public static enum Instruction { FullMatch, Find } //-------------------------------------------------------------------------- // constants public static final int DefaultGroupNumber = 1; public static final Instruction DefaultInstruction = Instruction.Find; //-------------------------------------------------------------------------- // data members private Pattern _pattern; private int _groupNumber; private Instruction _instruction; public RegexFunction (Pattern pattern, int groupNumber, Instruction instruction) { _pattern = pattern; _groupNumber = groupNumber; _instruction = DefaultInstruction; } public RegexFunction (Pattern pattern, int groupNumber) { _pattern = pattern; _groupNumber = groupNumber; _instruction = DefaultInstruction; } public RegexFunction (Pattern pattern) { this(pattern, DefaultGroupNumber); } public final String evaluate (Object... arguments) { return extract((String)arguments[0]); } public final String extract (String string) { Matcher matcher = _pattern.matcher(string); boolean matches = (_instruction == Instruction.Find) ? matcher.find() : matcher.matches(); return matches ? matcher.group(_groupNumber) : null; } }