package org.jbehave.core.parsers; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.jbehave.core.model.StepPattern; import org.jbehave.core.steps.StepType; public class RegexStepMatcher implements StepMatcher { private final Pattern regexPattern; private final String[] parameterNames; private final StepPattern stepPattern; private Matcher matcher; public RegexStepMatcher(StepType stepType, String annotatedPattern, Pattern regexPattern, String[] parameterNames) { this.regexPattern = regexPattern; this.parameterNames = parameterNames; this.stepPattern = new StepPattern(stepType, annotatedPattern, regexPattern.pattern()); } public boolean matches(String stepWithoutStartingWord){ matcher(stepWithoutStartingWord); return matcher.matches(); } public boolean find(String stepWithoutStartingWord){ matcher(stepWithoutStartingWord); return matcher.find(); } public String parameter(int matchedPosition) { return matcher.group(matchedPosition); } private void matcher(String patternToMatch){ matcher = regexPattern.matcher(patternToMatch); } public String[] parameterNames(){ return parameterNames; } public StepPattern pattern() { return stepPattern; } }