Xeger
这是 Xeger 库的维护分支。 它是一个用于生成匹配特定正则表达式的字符串的 Java 库。
Xeger 的原始版本可从该地址获得,但开发似乎已停止:
http://code.google.com/p/xeger/
这个分支的目标是简单地维护 Xeger,在报告的错误出现时修复它们。 不过,欢迎请求请求:-)。
作为参考,我复制了以下原始网站的几个有用部分。
介绍
将其视为正则表达式匹配器的对立面。 该库允许您生成保证与传入的正则表达式匹配的文本。
让我们以正则表达式为例: [ab]{4,6}c 使用 Xeger,您现在可以生成与此模式匹配的字符串,如下所示:
String regex = "[ab]{4,6}c";
Xeger generator = new Xeger(regex);
String result = generator.generate();
assert result.matches(regex);
限制
Xeger 不支持所有有效的 Java 正则表达式。
此处定义的全套内容汇总如下。
未来的版本可能会支持更完整的集合,以防万一。
regexp ::= unionexp
|
unionexp ::= interexp | unionexp (union)
| interexp
interexp ::= concatexp & interexp (intersection) [OPTIONAL]
| concatexp
concatexp ::= repeatexp concatexp (concatenation)
| repeatexp
repeatexp ::= repeatexp ? (zero or one occurrence)
| repeatexp * (zero or more occurrences)
| repeatexp + (one or more occurrences)
| repeatexp {n} (n occurrences)
| repeatexp {n,} (n or more occurrences)
| repeatexp {n,m} (n to m occurrences, including both)
| complexp
complexp ::= ~ complexp (complement) [OPTIONAL]
| charclassexp
charclassexp ::= [ charclasses ] (character class)
| [^ charclasses ] (negated character class)
| simpleexp
charclasses ::= charclass charclasses
| charclass
charclass ::= charexp - charexp (character range, including end-points)
| charexp
simpleexp ::= charexp
| . (any single character)
| # (the empty language) [OPTIONAL]
| @ (any string) [OPTIONAL]
| " <Unicode string without double-quotes> " (a string)
| ( ) (the empty string)
| ( unionexp ) (precedence override)
| < <identifier> > (named automaton) [OPTIONAL]
| <n-m> (numerical interval) [OPTIONAL]
charexp ::= <Unicode character> (a single non-reserved character)
| \ <Unicode character> (a single character)
Maven 存储库
这个库的二进制版本可以从我的 Maven Bintray 存储库中获得:
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>bintray-bluezio-maven</id>
<name>bintray</name>
<url>https://dl.bintray.com/bluezio/maven</url>
</repository>
</repositories>
参考资料
https://github.com/bluezio/xeger