Path: csiph.com!news.swapon.de!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Jussi Piitulainen Newsgroups: comp.lang.python Subject: Re: I can't understand re.sub Date: Mon, 30 Nov 2015 10:51:13 +0200 Organization: A noiseless patient Spider Lines: 20 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: mx02.eternal-september.org; posting-host="305c68510616a2e7ac08bcd2ff1598bd"; logging-data="19780"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/+344EKvi0m2VFuyHM+1ZY9SAs4hiMyrc=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) Cancel-Lock: sha1:PPIV/z2l3gb/Xe31oE+IoX6zzbQ= sha1:AfWVo+5uiDnIYAL9uozoQEImTU4= Xref: csiph.com comp.lang.python:99731 Erik writes: > On 29/11/15 21:36, Mr Zaug wrote: >> This should be simple, right? > > It is. And it could be even simpler if you don't bother with regexes > at all (if your input is as fixed as you say it is): > > >>> foo = "foo bar baz spam CONTENT_PATH bar spam" > >>> ' Substitute '.join(foo.split(' CONTENT_PATH ', 1)) > 'foo bar baz spam Substitute bar spam' Surely the straight thing to say is: >>> foo.replace(' CONTENT_PATH ', ' Substitute ') 'foo bar baz spam Substitute bar spam' But there was no guarantee of spaces around the target. If you wish to, say, replace "spam" in your foo with "REDACTED" but leave it intact in "May the spammer be prosecuted", a regex might be attractive after all.