I'm not sure I fully understand the requirements. If I assume the users want to find text "entries" where their search matches then I think this brute way would work as a start.
First escape everything regex-meaningful. Then use non-regex replaces for replacing the (now escaped) glob characters and build the regular expression. Like so in Python:
regexp = re.escape(search_string).replace(r'\?', '.').replace(r'\*', '.*?')
For the search string in the question, this builds a regexp that looks like so (raw):
foo\..\ bar.*?
Used in a Python snippet:
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
Produces:
Match: "gazonk foo.c bar.m m.bar"
Note that if you examine the match object you can find out more about the match and use for highlighting or whatever.
Of course, there might be more to it, but it should be a start.