Сравните два глобальных выражения - PullRequest
0 голосов
/ 24 июня 2011

Кто-нибудь знает алгоритм для проверки того, какое из двух групповых выражений является более общим, чем другое?Например, я хотел бы сравнить

*/foo/foo.bar 

с

*.bar

Очевидно, что первое выражение содержится во втором.Я знаю, что это невозможно для регулярных выражений (по крайней мере, если у вас нет лишнего времени, насколько я помню, это в классе сложности Не элементарный), но это может быть возможно для групповых выражений, которые намного меньшевыразительный.Я попытался собрать простой алгоритм Python, но он становится очень неприятным, когда дело доходит до особых случаев.У кого-нибудь есть идея, если есть алгоритм для этой проблемы?

ОБНОВЛЕНИЕ:

Я не хочу использовать какой-либо алгоритм перебора, так как он не будет работать вообще, из-за производительностипричины

С уважением,

Джеральд

1 Ответ

0 голосов
/ 24 июня 2011

Вам нужно как-то найти строку, которая соответствует более общему глобу, но не более конкретному. Просто быть капитаном очевидно ...

Возможно, заменив символ * на 0 или более случайных символов.

...