six2six / fixture-factory

Generator fake objects from a template
Apache License 2.0
445 stars 88 forks source link

Invalid regex: "http://[a-z]{10}.com/\\w{5}.jpg" #75

Closed gcobr closed 9 years ago

gcobr commented 9 years ago

I am trying to produce a valid URL through the following code:

        Fixture.of(MediaResource.class).addTemplate("valid", new Rule() {
            {
                add("url", regex("http://\\w{10}.com/\\w{5}.jpg"));
            }
        });

Notice the \w. It sometimes produces words with apostrophes, which are not acceptable. Hence, I tried to use:

regex("http://[a-z]{10}.com/\\w{5}.jpg")

But, although it looks like a valid regex, I get the following exception:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 10
http://[a-z
          ^
    at java.util.regex.Pattern.error(Pattern.java:1924)
    at java.util.regex.Pattern.clazz(Pattern.java:2493)
    at java.util.regex.Pattern.sequence(Pattern.java:2030)
    at java.util.regex.Pattern.expr(Pattern.java:1964)
    at java.util.regex.Pattern.compile(Pattern.java:1665)
    at java.util.regex.Pattern.<init>(Pattern.java:1337)
    at java.util.regex.Pattern.compile(Pattern.java:1022)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:34)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.interpreter.Parser.parseQuantified(Parser.java:123)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:58)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:103)
    at br.com.six2six.bfgex.interpreter.Parser.parseQuantified(Parser.java:123)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:58)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.interpreter.Parser.parse(Parser.java:113)
    at br.com.six2six.bfgex.RegexGen.of(RegexGen.java:8)
    at br.com.six2six.fixturefactory.function.impl.RegexFunction.generateValue(RegexFunction.java:17)
    at br.com.six2six.fixturefactory.Property.getValue(Property.java:37)
    at br.com.six2six.fixturefactory.ObjectFactory.processPropertyValue(ObjectFactory.java:232)
    at br.com.six2six.fixturefactory.ObjectFactory.createObject(ObjectFactory.java:116)
    at br.com.six2six.fixturefactory.ObjectFactory.gimme(ObjectFactory.java:58)
nykolaslima commented 9 years ago

We use bfgex(https://github.com/six2six/bfgex) to process the regex sentences. So this problem isn't in F-F. Can you please open the issue there?