regex - 如何找出与给定正则表达式匹配的字符串的最大和最小长度

标签 regex string algorithm

一个理论问题。我有一个正则表达式。我想找到与此匹配的字符串。我怎样才能得到这些字符串的最小和最大长度?

最佳答案

将正则表达式转换为 NFA(如果需要,可以使用 epsilon 转换)。删除所有无法达到接受状态的状态(这可能是空操作)。最小长度是到接受状态的最短路径的长度(从起始状态使用 Dijkstra,其中带有符号的转换长度为 1,epsilon 转换长度为 0)。使用双端队列,这是线性时间。当且仅当存在循环时,最大长度为无穷大。否则,转换图是无环的;在无环图中使用最长路径算法。

关于regex - 如何找出与给定正则表达式匹配的字符串的最大和最小长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30932860/

相关文章:

php - 正则表达式替换特定标记中所有出现的单个字符

python - RegEx 根据模式或分隔符替换字符实例

string - []字节(字符串)与[]字节(*字符串)

C# - 用下划线和字母替换每个大写字母

javascript - 如何检查任何数组成员是否可以在 JavaScript 中求和到其中最大的成员?

python - 当我在内部使用两个循环时,如何提高算法的效率?

javascript - 如何将变量传递给正则表达式

java - 正则表达式解析可能由或不由 ; 分隔的字符串分成几组

c++ - 迭代/递归

algorithm - 在一组单词中找到匹配的短语