commit f4325c3d3e28a6cfbbe5f55952597241c4b1ba6b Author: Mauro Talevi <mauro.tal...@aquilonia.org> AuthorDate: Sat, 25 Jan 2014 10:51:30 +0100 Commit: Mauro Talevi <mauro.tal...@aquilonia.org> CommitDate: Sat, 25 Jan 2014 10:52:06 +0100
JBEHAVE-974: Allow digits in pattern placeholder names. diff --git a/jbehave-core/src/main/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParser.java b/jbehave-core/src/main/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParser.java index 7686df5..95dad10 100755 --- a/jbehave-core/src/main/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParser.java +++ b/jbehave-core/src/main/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParser.java @@ -82,8 +82,9 @@ public class RegexPrefixCapturingPatternParser implements StepPatternParser { } private Pattern findAllPrefixedWords() { - // Use \p{L} in place of \w to allow for all unicode-supported letters, not only ASCII - return Pattern.compile("(\\" + prefix + "\\p{L}*)(\\W|\\Z)", Pattern.DOTALL); + // Use [\p{L}]p{N}] in place of \w to allow for all unicode-supported letters and numbers, not only ASCII + // http://www.regular-expressions.info/unicode.html + return Pattern.compile("(\\" + prefix + "[\\p{L}\\p{N}]*)(\\W|\\Z)", Pattern.DOTALL); } private String replaceParametersWithCapture(String escapedMatch, diff --git a/jbehave-core/src/test/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParserBehaviour.java b/jbehave-core/src/test/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParserBehaviour.java index 236f3c3..33291c4 100755 --- a/jbehave-core/src/test/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParserBehaviour.java +++ b/jbehave-core/src/test/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParserBehaviour.java @@ -26,6 +26,12 @@ public class RegexPrefixCapturingPatternParserBehaviour { } @Test + public void shouldMatchStepWithPatternsUsingNumbersInPlacehoderNames() { + assertThatPatternMatchesStep(parser, "a house with $numberOf1stFloorDoors doors and $facing2 windows", + "a house with 3 doors and 4 windows", "numberOf1stFloorDoors", "facing2"); + } + + @Test public void shouldMatchStepWithPatternsUsingAccentsInPlacehoderNames() { assertThatPatternMatchesStep(parser, "une maison avec $numérosDesPortes portes et $quelques fenêtres", "une maison avec 3 portes et 4 fenêtres", "numérosDesPortes", "quelques");