package org.biojava.bio.program.tagvalue; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** *

* A ValueChanger.Splitter that splits a line of text using a regular * expression, returning one value per match. *

* *

* A list of values is generated by effectively executing: *

 * matcher = pattern.matcher(value.toString());
 *
 * while(matcher.find()) {
 *   values.add(matcher.group(matchGroup);
 * }
 * 
*

* * @author Matthew Pocock * @since 1.3 */ public class RegexSplitter implements ChangeTable.Splitter { private Pattern pattern; private int matchGroup; /** * Create a new RegexSplitter with a pattern. * * @param pattern the Pattern used to split values * @param matchGroup the group to pull out - use 0 to pull out the whole match */ public RegexSplitter(Pattern pattern, int matchGroup) { this.pattern = pattern; this.matchGroup = matchGroup; } public List split(Object value) { Matcher matcher = pattern.matcher(value.toString()); List result = new ArrayList(); while(matcher.find()) { result.add(matcher.group(matchGroup)); } return result; } }