2012-07-16 35 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