要件を完全に理解しているかどうかはわかりません。ユーザーが検索に一致するテキスト「エントリ」を見つけたいと思うなら、このブルートな方法が最初にうまくいくと思います。
最初にすべての正規表現をエスケープします。次に、(現在エスケープされている)グロブ文字を置き換えるために非正規表現の置換を使用し、正規表現を構築します。Python では次のようになります。
regexp = re.escape(search_string).replace(r'\?', '.').replace(r'\*', '.*?')
質問の検索文字列については、次のような正規表現が作成されます (raw):
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"
一致オブジェクトを調べると、一致に関する詳細がわかり、強調表示などに使用できることに注意してください。
もちろん、それ以上のこともあるかもしれませんが、それは出発点であるべきです。