Python regex

Andrew Rekdal
Thu Mar 13 16:22:34 EDT 2008



-- 
-- Andrew

"Arnaud Delobelle" <arnodel at googlemail.com> wrote in message 
news:9e9cfd5e-72e6-4033-bc9f-b089ec8fd95c at i29g2000prf.googlegroups.com...
On Mar 13, 8:03 pm, "Andrew Rekdal" <<nospam>@comcast.net> wrote:
> I hope posting is ok here for this question...
>
> I am attempting to extract the text from a CSS comment using 're' such 
> as...
>
> string = "/* CSS comment /*"
> exp = "[^(/*)].*[^(*/)] "
>
> p = re.compile(exp)
> q = p.search(string)
> r = q.group()
>
> print r
>
> >>CSS comment
>
> although this works to a degree... I know the within the brackets 
> everything
> is taken literally so the pattern
> I am to negating is "(/*)". ie. includes the parenthesis.
>
> So my question is...
>
> Is there a way to negate a pattern that is more than on character long? 
> eg.
> where rather than saying if forward slash OR astrisk appear..negate.
>
> I would be saying if parenthesis AND asterisk appear in this order... 
> negate
>
> -- Andrew

There would be many ways to do this. One:

>>> import re
>>> r = re.compile(r'/\*(.*?)\*/')
>>> tst = '.a { color: 0xAACC66; /* Fav color */ }'
>>> m = r.search(tst)
>>> m.group(1)
' Fav color '
>>>

HTH

--
Arnaud

Arnaud,

in your expression above..

>>> r = re.compile(r'/\*(.*?)\*/')

what does the 'r' do?

-- andrew





More information about the Python-list mailing list