我希望能够计算所有字符的集合,这些字符可能与给定的java.util.regex.Pattern
. 更正式地说,给定 DFA 等价于某个正则表达式,我想要从起始状态开始的所有传出转换的集合。
一个例子:
Pattern p = Pattern.compile("[abc]def|daniel|chris|\\s+");
Set<Character> first = getFirstSet(p);
该集合first
应包含以下元素:
{ 'a', 'b', 'c', 'd', ' ', '\n', '\r', '\t' }
有任何想法吗?我很清楚我可以自己构建 DFA 并以这种方式确定相关状态,但我想避免这种麻烦(阅读:这对我来说不值那么多)。请注意,我的宿主语言实际上是 Scala,因此我可以访问所有核心 Scala 库(值得一提)。