Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.apache.pig.builtin;
 
 import java.util.List;
 
Syntax:
String RegexExtractAll(String expression, String regex).
Input:
expression-source string.
regex-regular expression.
Output:
A tuple of matched strings.
Matching strategy:
Trying to match the entire input by using java.util.regex.Matcher.matches() instead of java.util.regex.Matcher.find() (default useMatches=true).
DEFINE GREEDY_EXTRACT REGEX_EXTRACT(false);
 
 
 public class REGEX_EXTRACT_ALL extends EvalFunc<Tuple> {
     private static TupleFactory tupleFactory = TupleFactory.getInstance();
     boolean mUseMatches = true;
 
     public REGEX_EXTRACT_ALL() {}
 
     public REGEX_EXTRACT_ALL(boolean useMatches) {
       this. = useMatches;
     }
 
     @Override
     public Tuple exec(Tuple inputthrows IOException {
         if (input.size()!=2) {
             String msg = "RegexExtractAll : Only 2 parameters are allowed.";
             throw new IOException(msg);
         }
 
         if (input.get(0)==null)
             return null;
         try {
             if (!input.get(1).equals()) {
                 try {
                      = (String)input.get(1);
                      = Pattern.compile();
                 } catch (Exception e) {
                     String msg = "RegexExtractAll : Mal-Formed Regular expression : "+input.get(1);
                     throw new IOException(msg);
                 }
             }
         } catch (NullPointerException e) {
             String msg = "RegexExtractAll : Regular expression is null";
             throw new IOException(msg);
         }
 
         Matcher m = .matcher((String)input.get(0));
         if (&&!m.matches()||!&&!m.find()) {
             return null;
         }
         Tuple result = .newTuple(m.groupCount());
         for (int i = 0; im.groupCount(); i++) {
             result.set(im.group(i+1));
         }
         return result;
     }
 
     String mExpression = null;
     Pattern mPattern = null;
     @Override
     public Schema outputSchema(Schema input) {
         try {
            return new Schema(new Schema.FieldSchema(getSchemaName(this.getClass().getName().toLowerCase(), input),
                    .));
        } catch (Exception e) {
            return null;
        }
    }
    @Override
    public List<FuncSpecgetArgToFuncMapping() throws FrontendException {
        List<FuncSpecfuncList = new ArrayList<FuncSpec>();
        Schema s = new Schema();
        s.add(new Schema.FieldSchema(null.));
        s.add(new Schema.FieldSchema(null.));
        funcList.add(new FuncSpec(this.getClass().getName(), s));
        return funcList;
    }
New to GrepCode? Check out our FAQ X