JavaVerbalExpressions icon indicating copy to clipboard operation
JavaVerbalExpressions copied to clipboard

anyOf is not matched requirements

Open dawnbreaks opened this issue 7 years ago • 8 comments

How can JavaVerbalExpressions build a simple regex like this: [\d,]+

VerbalExpression.regex().anyOf("0123456789,").oneOrMore().build()

It 's too ugly! How about this one: [a-k\s\d,]+ ?

It would be nice to add a anyOf method that can used like this:

VerbalExpression.regex().anyOf(DigitCharSet, WordCharSet, SpaceCharSet ,";:,\\").oneOrMore().build()

dawnbreaks avatar May 22 '17 06:05 dawnbreaks

Can't see why your variant better than original

lanwen avatar May 23 '17 15:05 lanwen

@lanwen It 's ridiculous to list all the Word char and all digit char in the sring parameter in the anyOf method.

dawnbreaks avatar May 24 '17 06:05 dawnbreaks

lib already has .wordChar().nonWordChar().space().nonSpace().digit().nonDigit()

use with .capture().endCapture() - is it solve your case?

lanwen avatar May 24 '17 08:05 lanwen

No. Please tell me how to use verbalExpressions to represent this regex: [a-k\s\d,]+

dawnbreaks avatar May 24 '17 08:05 dawnbreaks

regex().add("[").wordChar().space().digit().add("]").oneOrMore()

regex().anyOf("\\w\\s\\d")

regex().capture().digit().or("\\w").or("\\s").endCapture().oneOrMore()

regex().add("[a-k\s\d,]+")

You can use raw regex if it looks more compact

lanwen avatar May 24 '17 09:05 lanwen

I think java regex is more readable than verbal expressions. VE is too awkward to use it.

dawnbreaks avatar May 24 '17 09:05 dawnbreaks

In some cases it's true! VE is mostly for those who don't know how to type simple regex. Or where you should write something that should be human-readable (for example in tests).

lanwen avatar May 24 '17 10:05 lanwen

It's some late, but I think with an indentation it can be better:

.add("[")
.wordChar().space().digit()
.add("]")
.oneOrMore()

You are right, sometimes regex is better than ve, principally for those who know regex enough. But we have a lot of thing to improve our code, whatever we use.

eduardohmg avatar Jul 18 '17 14:07 eduardohmg