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