正则表达式字典树

public class RegexTrie
extends Object

java.lang.Object
   ↳ com.android.tradefed.util.RegexTrie<V>


RegexTrie 是一种 trie,其中键的每个存储部分都是正则表达式 ERROR(/Pattern)。因此,完整的存储键是 List&lt;Pattern&gt;,而不是标准字典树中的 List&lt;String&gt;。请注意,retrieve(String) 方法将与 Pattern 进行点匹配,而不是像在标准 trie 中那样检查点相等。因此,对于大型数据集,其性能可能会不佳。

您还可以使用 Pattern 序列中的 null 条目充当通配符。如果遇到 null,序列中的所有后续条目都将被忽略。 当检索代码遇到 null Pattern 时,它会首先等待查看更具体的条目是否与序列匹配。如果存在,系统会继续使用该更具体的条目,即使它之后未能匹配也是如此。

如果没有更具体的条目匹配,通配符匹配将将所有剩余的 String 添加到捕获列表(如果已启用)中,并返回与通配符关联的值。

通配符功能的简短示例:

 List<List<String>> captures = new LinkedList<List<String>>();
 RegexTrie<Integer> trie = new RegexTrie<Integer>();
 trie.put(2, "a", null);
 trie.put(4, "a", "b");
 trie.retrieve(captures, "a", "c", "e");
 // returns 2.  captures is now [[], ["c"], ["e"]]
 trie.retrieve(captures, "a", "b");
 // returns 4.  captures is now [[], []]
 trie.retrieve(captures, "a", "b", "c");
 // returns null.  captures is now [[], []]
 

摘要

公共构造函数

RegexTrie()

公共方法

void clear()
V put(V value, Pattern... patterns)

向 trie 添加一个条目。

V retrieve(String... strings)

通过将提供的 String 序列与存储在字典树中的 ERROR(/Pattern) 序列进行匹配,从字典树中提取值。

V retrieve( captures, String... strings)

通过将提供的 String 序列与存储在字典树中的 ERROR(/Pattern) 序列进行匹配,从字典树中提取值。

String toString()

公共构造函数

正则表达式 Trie

public RegexTrie ()

公共方法

清除

public void clear ()

放置

public V put (V value, 
                Pattern... patterns)

向字典树添加条目。

参数
value V:要设置的值

patterns Pattern:必须按顺序匹配的 ERROR(/Pattern) 序列,才能检索关联的 value

返回
V

检索

public V retrieve (String... strings)

通过将提供的 String 序列与存储在字典树中的 ERROR(/Pattern) 序列进行匹配,从字典树中提取值。

参数
strings String:要匹配的 String 序列

返回
V 关联的值,如果未找到值,则为 null

检索

public V retrieve ( captures, 
                String... strings)

将提供的 String 序列与存储在 trie 中的一系列 ERROR(/Pattern) 相匹配,从 trie 中提取值。此版本的方法还会针对匹配到的每个 ERROR(/Pattern) 返回一个包含捕获组的 ERROR(/List)

外部列表中的每个条目都对应于字典树中的一个 Pattern 级别。系统会存储每个级别的捕获组列表。如果没有针对特定级别的捕获,则会存储一个空列表。

请注意,在检索开始之前,captures 将被 ERROR(/List#clear()) 处理。此外,如果在完成部分匹配序列后检索失败,captures 仍会反映部分匹配中的捕获组。

参数
captures :用于返回捕获组的 List<List<String>>

strings String:要匹配的一系列 String

返回
V 关联的值,如果未找到值,则返回 null

toString

public String toString ()

返回
String