Generex

用于生成与给定正则表达式匹配的字符串的 Java 库。

它可以帮助您根据索引从匹配的字符串中生成与给定正则表达式匹配的所有字符串、随机字符串或一个字符串。

Generex 基于图书馆 http://www.brics.dk/~amoeller/automaton/。

特征 :

  • 生成与正则表达式匹配的随机字符串。

  • 指定随机生成的字符串的最小/最大长度。

  • 生成匹配正则表达式的所有字符串的列表,如果匹配正则表达式的字符串数量大于 Integer.MAX_VALUE ,则返回的列表将包含不超过 java.util.List 的大小限制的字符串,即 Integer.MAX_VALUE (在这种情况下,请参阅迭代器的功能)。

  • 根据字典顺序生成与 Regex 匹配的字符串子列表。

  • 给定一个索引 ‘n’ ,按照与 Regex 匹配的字符串列表的字典顺序生成第 n 个元素。

  • 准备一个迭代器,循环遍历与正则表达式匹配的所有字符串。 即使匹配给定正则表达式的字符串集是无限的。

如何使用它 :

如果您使用 Maven,您可以通过添加以下依赖项将此库包含到您的项目中:

<dependency>
  <groupId>com.github.mifmif</groupId>
  <artifactId>generex</artifactId>
  <version>1.0.2</version>
</dependency>

可以在 Maven Central 中找到所有可用版本的列表。

以下是演示库用法的示例 Java 代码:

Generex generex = new Generex("[0-3]([a-c]|[e-g]{1,2})");
// Generate random String
String randomStr = generex.random();
System.out.println(randomStr);// a random value from the previous String list
// generate the second String in lexicographical order that match the given Regex.
String secondString = generex.getMatchedString(2);
System.out.println(secondString);// it print '0b'
// Generate all String that matches the given Regex.
List<String> matchedStrs = generex.getAllMatchedStrings();
// Using Generex iterator
Iterator iterator = generex.iterator();
while (iterator.hasNext()) {
	System.out.print(iterator.next() + " ");
}
// it prints:
// 0a 0b 0c 0e 0ee 0ef 0eg 0f 0fe 0ff 0fg 0g 0ge 0gf 0gg
// 1a 1b 1c 1e 1ee 1ef 1eg 1f 1fe 1ff 1fg 1g 1ge 1gf 1gg
// 2a 2b 2c 2e 2ee 2ef 2eg 2f 2fe 2ff 2fg 2g 2ge 2gf 2gg
// 3a 3b 3c 3e 3ee 3ef 3eg 3f 3fe 3ff 3fg 3g 3ge 3gf 3gg

参考资料

https://www.brics.dk/automaton/