Turn your favourite regex into FAT32
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 年前 | ||
| 6 年前 | ||
| 6 年前 | ||
| 6 年前 | ||
| 6 年前 | ||
| 6 年前 |
regex2fat
你是否曾经想要匹配一个正则表达式,但手头只有fat32驱动器?是否想将你的正则表达式确定性有限自动机(DFA)序列化为一种超过30亿设备广泛支持的格式?
不必再烦恼,有了regex2fat,这一切变得前所未有地简单!
只需使用regex2fat '[YOUR] F{4}VOUR{1,7}E (R[^E]G)*EX HERE.' /dev/whatever,你就能得到一个你喜欢的正则表达式的fat32 DFA。
例如,要检查字符串'Y FFFFVOURRE EX HEREM'是否匹配,只需挂载它并查看'/Y/SPACE/F/F/F/F/V/O/U/R/R/E/SPACE/E/X/SPACE/H/E/R/E/M/MATCH'是否存在。
要运行它,你可以安装cargo,然后执行cargo install regex2fat(或者直接从这个仓库编译)。
如果你的路径中包含cargo二进制目录,你应该能够像上面描述的那样调用它。
创建的文件将是一个fat32映像,可能可以以某种方式挂载或放入驱动器中,但最好不要这样做。
常见问题
问:这个是怎么工作的?
答:常规正则表达式(即不支持回引用等高级特性)可以被转换为一个所谓的确定性有限自动机(DFA)。 这基本上是一堆状态之间的箭头,每个箭头标有一个字母,使得状态中的一个字母使得当前状态沿着箭头移动到另一个状态,其中一组状态是可接受的。 是的,我解释得不好,你如果不知道DFA是什么,最好阅读一下维基百科上的DFA文章。
因为我比较懒,我使用了BurntSushi/regex-automata来从正则表达式获取DFA。
尽管Fat32通常具有树状结构,但每个目录只是引用文件系统上任何位置的块,所以同一个块可以从多个目录引用。
目录也没有显式的父目录字段,因此可以省略..。
这允许在文件系统内部创建图形结构,而DFA本质上就是这样的结构。
问:我应该在生产环境的任何地方使用这个吗?
答:不,但我不能阻止你。
问:这真的有效吗?
答:我已在Windows 10和Linux上尝试过。 在我的测试中,它在Windows上似乎运行无懈可击。
在Linux上,fat32代码声称如果循环中(或类似情况)有两个具有相同目录名称和相同父目录的目录项,则目录无效,因此某些路径是被禁止的。
在某些嵌入式设备上尝试可能会很有趣。
问:NOOOOOOOOOOO!!! 你不能把DFA变成fat32文件系统!!!你不能有多个父目录的目录!!!你正在打破无循环假设NOOOOOOOOO
答:哈哈,操作系统驱动的正则表达式引擎,开动起来啦!