我有许多由用户提供的正则表达式,并从中选择一个与输入字符串匹配的表达式。现在,在多个表达式匹配的情况下,我想选择最具体的表达式,也就是最不明确的表达式。
更具体地说:--我正在用与几个人一起编写一个IRC机器人,确切地说是用编写的。命令可以由regex注册,其中一些命令是重叠的。可以为每个命令提供某种优先级,但是这将引入另一个失败点。我更愿意在命令注册时根据所提供的正则表达式的模糊性自动生成一种“记分”。我还没有在Google上找到合适的算法。
一种天真的方法,目前可能适用于我的需要,可能是正则表达式中字符与通配符的比例,但是如果您知道这里的任何具体算法,我会感兴趣的。
发布于 2018-07-17 23:03:09
如果使用可以转换为DFA的grep样式正则表达式,那么对于任何正则表达式,都可以计算出随机字符串匹配它的概率。
我认为这是一个合理的选择,对于你想要的分数--一个随机字符串匹配的概率越低,正则表达式就越具体。对于额外的点,“随机字符串”的概念可以建模人们实际键入的字符串类型。
这不容易,但是可行的。这一过程将是这样的:
步骤(4)将指定随机字符串进入接受状态的概率,即随机字符串匹配正则表达式的概率。这个概率越低,正则表达式就越具体。
https://stackoverflow.com/questions/51387339
复制相似问题