MINOR: Update Trogdor StringExpander regex to handle an epilogue (#6123)

Update the Trogdor StringExpander regex to handle an epilogue.  Previously the regex would use a lazy quantifier at the end, which meant it would not catch anything after the range expression.  Add a unit test.

Reviewed-by: Colin P. McCabe <cmccabe@apache.org>
This commit is contained in:
Stanislav Kozlovski 2019-01-15 06:49:24 +02:00 committed by Colin Patrick McCabe
parent aca52b6d2c
commit 13f679013a
2 changed files with 16 additions and 1 deletions

View File

@ -29,7 +29,7 @@ import java.util.regex.Pattern;
*/
public class StringExpander {
private final static Pattern NUMERIC_RANGE_PATTERN =
Pattern.compile("(.*?)\\[([0-9]*)\\-([0-9]*)\\](.*?)");
Pattern.compile("(.*)\\[([0-9]*)\\-([0-9]*)\\](.*)");
public static HashSet<String> expand(String val) {
HashSet<String> set = new HashSet<>();

View File

@ -58,5 +58,20 @@ public class StringExpanderTest {
"[[ wow52 ]]"
));
assertEquals(expected3, StringExpander.expand("[[ wow[50-52] ]]"));
HashSet<String> expected4 = new HashSet<>(Arrays.asList(
"foo1bar",
"foo2bar",
"foo3bar"
));
assertEquals(expected4, StringExpander.expand("foo[1-3]bar"));
// should expand latest range first
HashSet<String> expected5 = new HashSet<>(Arrays.asList(
"start[1-3]middle1epilogue",
"start[1-3]middle2epilogue",
"start[1-3]middle3epilogue"
));
assertEquals(expected5, StringExpander.expand("start[1-3]middle[1-3]epilogue"));
}
}