On Nov 6, 11:07 am, "J. Clifford Dyer" <[EMAIL PROTECTED]> wrote:
> On Tue, Nov 06, 2007 at 08:49:33AM -0800, [EMAIL PROTECTED] wrote regarding 
> regular expressions:
>
>
>
> > hi i am looking for pattern in regular expreesion that replaces
> > anything starting with and betweeen http:// until /
> > likehttp://www.start.com/startservice/yellow/fdhttp://helo/abcdwill
> > be replaced as
> > p/startservice/yellow/ fdp/abcd
>
> You don't need regular expressions to do that.  Look into the methods that 
> strings have.  Look at slicing. Look at len.  Keep your code readable for 
> future generations.
>
> Py>>> help(str)
> Py>>> dir(str)
> Py>>> help(str.startswith)
>
> Cheers,
> Cliff

Look again at the sample input.  Some of the OP's replacement targets
are not at the beginning of a word, so str.startswith wont be much
help.

Here are 2 solutions, one using re, one using pyparsing.

-- Paul


instr = """
anything starting with and betweeen "http://"; until "/"
like http://www.start.com/startservice/yellow/ fdhttp://helo/abcd
will
be replaced as
"""

REPLACE_STRING = "p"

# an re solution
import re
print re.sub("http://[^/]*";, REPLACE_STRING, instr)


# a pyparsing solution - with handling of target strings inside quotes
from pyparsing import SkipTo, replaceWith, quotedString

replPattern = "http://"; + SkipTo("/")
replPattern.setParseAction( replaceWith(REPLACE_STRING) )
replPattern.ignore(quotedString)

print replPattern.transformString(instr)


Prints:

anything starting with and betweeen "p/"
like p/startservice/yellow/ fdp/abcd will
be replaced as


anything starting with and betweeen "http://"; until "/"
like p/startservice/yellow/ fdp/abcd will
be replaced as

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

Reply via email to