Inserting filename, reading data, inserting regex, and testing if each line matches
Some thoughts:


Don't use globals, pass variables as function arguments.
Follow pep8
Don't use == None.  False, 0, 0.0, None, and empty sequences like lists or strings are all considered False, so in your case you can just do something like if not regex.  If you need to test for None specifically, use is None.
Don't do return None, just an empty return will return None automatically.
Don't do a blind except:, you should always check for a specific exception.
For the loop, use enumerate to keep track of the current index.
Use with open(filename, 'r'):.  This will automatically close the file when you leave the with block, even if there is an exception, so you don't need to manually close.
In read_file, don't catch the exception at all.  The default exceptions give the user more information and more useful information than your exceptions, so just let them be handled normally.
It is clearer to do something like print('"%s"' % regex) rather than print('"', regex, '"').  Or better yet regex = '"%s"' % regex if regex else 'empty', then print('Current regex is', regex).
show_menu shouldn't be a separate function.