Я не уверен, что полностью понимаю требования. Если я предполагаю, что пользователи хотят найти текстовые «записи», совпадающие с их результатами поиска, я думаю, что этот грубый способ сработает в качестве начала.
Сначала избегайте всего, что имеет значение для регулярных выражений. Затем используйте замены без регулярных выражений для замены (теперь экранированных) глобальных символов и создайте регулярное выражение. Как в Python:
regexp = re.escape(search_string).replace(r'\?', '.').replace(r'\*', '.*?')
Для строки поиска в вопросе создается регулярное выражение, которое выглядит так (необработанное):
foo\..\ bar.*?
Используется во фрагменте кода Python:
search = "foo.? bar*"
text1 = 'foo bar'
text2 = 'gazonk foo.c bar.m m.bar'
searcher = re.compile(re.escape(s).replace(r'\?', '.').replace(r'\*', '.*?'))
for text in (text1, text2):
if searcher.search(text):
print 'Match: "%s"' % text
Производит:
Match: "gazonk foo.c bar.m m.bar"
Обратите внимание, что если вы исследуете соответствующий объект, вы можете узнать больше о совпадении и использовать его для выделения или чего-то еще.
Конечно, это может быть нечто большее, но это должно быть началом.
person
PEZ
schedule
15.01.2009