2012-07-16 28 views
0

比方说,我有几个正则表达式:最严格的正则表达式

expr_1: “test_file里面”

expr_2: “TEST_ *”

expr_3: “测试*”

所有这些匹配字符串“test_file”。我怎样才能找出哪个规则是最严格的规则(在这个例子中是expr_1)?

我想要什么来实现的:

我有一个适用于很多文件的一般规则,但对于例子.JPEG文件,我想做一个特殊的操作。我怎么知道选择“.jpeg”文件的规则比“*”规则更具限制性?

编辑: 我使用Qt的QRegExp,但这不应该改变任何东西。

+0

通过返回的结果数量。大多数情况下,如果你是匹配文件。 – 2012-07-16 17:49:30

回答

0

你在用什么语言?

一个很好的“限制性”措施可能是通过正则表达式运行一个潜在字符串数组(在这种情况下,一堆文件名),并查看每个字符串匹配的数量。

2

这是解决基于语言理论这一问题的正确方法:

计算正则表达式那就是“和”或所有其他正则表达式的“组合”。 您可以将所有正则表达式转换为DFA,然后可以创建所有自动机的交集,这将为您提供一个新的DFA,它将只接受所有三个正则表达式都接受的事物。然后,您还可以最小化自动机,并将其转换回正则表达式。如果你这样做,你会得到一个正则表达式,它和所有其他正则表达式一样是限制性的,哪一个是可能的最短正则表达式。

伟大的书,介绍如何做的一切:Introduction to Automata Theory, Languages, and Computation