At 10:17 PM 5/17/2008, Gabriel Genellina wrote:
En Sat, 17 May 2008 23:37:16 -0300, Dick Moores <[EMAIL PROTECTED]> escribió:

> I have a text file of phone numbers, which I'd like to search with a regex.
>
> fstr = "\sjoe\s"
> regex = "^.*" + fstr + ".*$"
>
> fstr = "\sjoe\s"
> regex = "r'^.*" + fstr + ".*$'"

The r"..." is a signal to the parser - meaning "don't interpret the escape characters here". Note that the r is OUTSIDE the quotes. In your example, the escape characters are in fstr, so it should be written as r"\sjoe\s"

However, (please refer back to my original post) I want to keep the fstr, ultimately to be the string entered by the user who knows a bit about regex, but not how to use r' ' . Or alternatively, not assume any knowledge of regex, but build in some options, such as ignoring/not ignoring case, searching on just a string, or on a word. So I want to know how to build the user's fstr into regex. I apologize for not making this clear.

Now, if you want "the lines that contain the word joe surrounded by space", just use:

import re
regex = r"\sjoe\s"
p = re.compile(regex, re.I)
f = open('phone.txt', 'r')
for line in f:
     m = p.search(line)
     if m:
         print m.group()
f.close()

A file is its own line iterator (no need for readlines). And since you're iterating over lines, the regex doesn't have to test for it ^ and $.

Yes, that works. Thanks.

Dick Moores
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to