On Mon, Aug 28, 2006 at 11:36:18AM -0400, Kent Johnson wrote: >William O'Higgins Witteman wrote: >> Thank you for this. The problem is apparently not my syntax, but >> something else. Here is a pared-down snippet of what I'm doing: >> >> In [1]: import re >> >> In [2]: pat = re.compile(''' >> ...:copy of >> ...:| >> ...:admin >> ...:''', re.IGNORECASE | re.VERBOSE) >> >> In [3]: pat.search('''\\some\unc\path\Copy of somedarnfilename.exn''') >> >> In [4]: >> >> I don't get my match, and I really think I should. Can anyone tell me >> what I'm missing? Thanks. >There are several problems here. > >First, when re.VERBOSE claims to ignore whitespace, it isn't kidding. >Space, tab and newline are all whitespace, so your re is equivalent to > > pat = re.compile('''copyof|admin''', re.IGNORECASE) [redacted] > >To get the space between 'copy' and 'of' to be included, you have to escape >it, e.g. 'copy\ of'.
D'oh! I'm an idjit, thanks for your patience. >But even if you do escape the space, I'm not sure what you expect to match. >Colon is not special to regexes (except in non-grouping parentheses (?:...) ), >so your regex expects literal colons in the string, which you don't have. Um, that is the output of the iPython shell, which I thought you used. I just copied the output into the window. It indicates an indent. I didn't mean to muddy the waters. Sorry. >Finally, in your test string you use backslash characters which you mean to be >literal backslashes, not character escapes. You should use a raw string for >this: > pat.search(r'''\\some\unc\path\Copy of somedarnfilename.exn''') Excellent, thanks for that. -- yours, William _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor