无需登录 数据私有 本地保存

正则表达式填字游戏求解器 - 辅助破解 Regex Crossword

26
0
0
0

正则表达式填字游戏求解器

Regex Crossword Solver — 输入行列正则,自动求解字符网格

就绪
在网格中手动输入已知字母作为固定约束,留空的位置由求解器填充。黄色边框=固定约束。

常见问题与知识点

什么是正则表达式填字游戏(Regex Crossword)?
正则表达式填字游戏是一种逻辑谜题,类似于传统的填字游戏,但使用正则表达式作为线索。网格的每一行和每一列都对应一个正则表达式模式,你需要找到一个字符矩阵,使得每一行的字符串匹配其对应的行正则,每一列的字符串匹配其对应的列正则。这类谜题由MIT等机构推广,是练习正则表达式技能的绝佳方式。
如何使用这个求解器?
步骤:
① 选择网格大小(2×2到6×6);
② 选择字符集(默认A-Z大写字母);
③ 在网格上方的输入框中填写每列的正则表达式;
④ 在网格右侧的输入框中填写每行的正则表达式;
⑤ 如果已知某些格子的字母,可直接在网格中输入(这些格子会用黄色边框标记为固定约束);
⑥ 点击"求解"按钮,工具将自动搜索所有满足条件的解。
求解器使用什么算法?
本求解器采用约束传播 + 回溯搜索的混合算法。首先对每个单元格进行预分析,根据行列正则表达式缩小候选字符集(处理字符类、文字字符、通配符等常见模式);然后使用MRV(最小剩余值)启发式进行深度优先回溯搜索,配合行列正则的实时剪枝。对于包含*+等可变长度量词的复杂正则,求解器会在搜索中动态验证约束。搜索采用异步分片执行,不会阻塞浏览器UI。
支持哪些正则表达式语法?
求解器基于JavaScript的正则引擎,支持标准正则语法:字符类[A-Z][^abc])、量词*+?{n}{n,m})、分组与交替(ab|cd))、通配符.)、锚点^$)、转义字符\d\w\s等)。注意:求解器会自动在行/列正则两端添加^$以确保完整匹配。
为什么求解很慢或找不到解?
可能原因:
① 搜索空间过大:对于6×6网格和26个字符的字符集,理论搜索空间为26^36,如果正则约束不够强,求解会非常缓慢。建议使用更小的字符集或提供更强的正则约束;
② 正则与网格大小不匹配:确保行正则能匹配长度为列数的字符串,列正则能匹配长度为行数的字符串;
③ 无解:行列正则之间存在矛盾,无法同时满足。请检查正则表达式是否正确;
④ 超时:求解器默认在10秒后停止搜索,返回已找到的解。
正则表达式填字游戏的解题技巧有哪些?
① 从简单的正则入手:字符类[ABC]直接限制了候选字母,固定字符串CAT则完全确定该行/列;
② 利用交集缩小范围:每个单元格同时受行正则和列正则约束,取两者候选集的交集;
③ 注意量词A{3}意味着连续3个A,A*可以匹配0个或多个A;
④ 利用已知字母:如果某个单元格已确定,它可以作为锚点帮助推断相邻单元格;
⑤ 反向推理:如果某行正则是[^X]{5},则该行所有位置都不能是X。
有哪些著名的Regex Crossword资源?
知名的正则表达式填字游戏资源包括:regexcrossword.com(提供从入门到专家级别的多组谜题)、MIT Mystery Hunt中的正则谜题、以及Regex Golf(另一种正则练习形式)。本工具可作为这些谜题的辅助求解器使用。