OpenRegex is written by Michael Schmitz at the Turing Center http://turing.cs.washington.edu/. It is licensed under the Lesser GPL. Please see the LICENSE file for more details.
OpenRegex-scala provides scala bindings against OpenRegex. The Scala bindings use Scala collections as well as providing a more familiar API for Scala users.
OpenRegex-scala also includes a
PatternParser implementation that uses reflection to run over any class out of the box. Any public field or 0-argument method may be used to match against a string. There is an exact string matcher (single quotes) and a regular expression matcher (forward slashes). Multiple aspects of a class can be matched against and combined with a logical expression.
case class Point(x: Int, y: Int) val parser = PatternParsers.reflectionWithLogic[Point] val regex = parser("<x='1' | x='2'> <x='3' & y='3'>") regex.matches(Seq(Point(1, 1), Point(3, 3)))
Using regular expressions, the pattern could have been expressed equivalently.
val regex = parser("<x=//> <x='3' & y='3'>")