Подстановочный поиск в C # - PullRequest
1 голос
/ 19 марта 2009

У меня есть список шаблонных шаблонов в файле XML. Если входная строка соответствует шаблону, представленному в документе XML, то будет предпринято конкретное действие.

Я нашел подход, упомянутый здесь http://www.codeproject.com/KB/recipes/wildcardtoregex.aspx, но в этом случае мне нужно создать объект RegEx для каждой записи в XML, которую я пытаюсь избежать.

Дайте мне знать, есть ли лучший способ поиска по шаблону в .net

Ответы [ 2 ]

1 голос
/ 20 марта 2009

Если вы хотите оценить каждый шаблон в вашем документе на соответствие входной строке, вам придется создать RegEx для каждого шаблона, как вы упомянули. Там нет ярлыка.

Полагаю, вы беспокоитесь о производительности. Вы уверены, что это проблема? Если это так, вам следует попытаться найти совершенно другой подход.

Собираетесь ли вы соответствовать много входных строк? В этом случае вы должны хранить ваши RegExes (скажем, в списке), а не создавать их каждый раз. RegExes можно использовать повторно.

В противном случае, я не вижу большой проблемы с вашим предложенным подходом.

1 голос
/ 20 марта 2009

Мне уже давно не пора спать, поэтому я могу показаться странным в этом ответе.

Мне кажется, что у вас все настроено неправильно: вы сравниваете входную строку со списком шаблонов. По логике, вы должны сопоставлять каждый шаблон в списке с входной строкой и определять соответствие. Должно быть довольно просто создать массив шаблонов Regex, анализируя XML-файл. Затем вы можете перебирать массив и сопоставлять каждое регулярное выражение с вашей входной строкой.

Кроме того, зачем вообще нужны групповые символы? Подстановочные знаки можно рассматривать как подмножество Regex, поэтому у вас уже есть все функции сопоставления подстановочных знаков, инкапсулированные в объекте Regex.

Тем не менее, больше данных о типе ввода / групповых символах может оказаться полезным для понимания вашего вопроса.

...