RegExp help

MRAB python at mrabarnett.plus.com
Wed Feb 10 22:31:26 EST 2016


On 2016-02-11 03:09, Larry Martell wrote:
> On Wed, Feb 10, 2016 at 10:00 PM, MRAB <python at mrabarnett.plus.com> wrote:
>> On 2016-02-11 02:48, Larry Martell wrote:
>>>
>>> Given this string:
>>>
>>>>>> s = """|Type=Foo
>>>
>>> ... |Side=Left"""
>>>>>>
>>>>>> print s
>>>
>>> |Type=Foo
>>> |Side=Left
>>>
>>> I can match with this:
>>>
>>>>>> m = re.search(r'^\|Type=(.*)$\n^\|Side=(.*)$',s,re.MULTILINE)
>>>>>> print m.group(0)
>>>
>>> |Type=Foo
>>> |Side=Left
>>>>>>
>>>>>> print m.group(1)
>>>
>>> Foo
>>>>>>
>>>>>> print m.group(2)
>>>
>>> Left
>>>
>>> But when I try and sub it doesn't work:
>>>
>>>>>> rn = re.sub(r'^\|Type=(.*)$^\|Side=(.*)$', r'|Side Type=\2
>>>>>> \1',s,re.MULTILINE)
>>>>>> print rn
>>>
>>> |Type=Foo
>>> |Side=Left
>>>
>>> What very stupid thing am I doing wrong?
>>>
>> The 4th argument of re.sub is the count.
>
>
> Thanks. Turned out that this site is running 2.6 and that doesn't
> support the flags arg to sub. So I had to change it to:
>
> re.sub(r'\|Type=(.*)\n\|Side=(.*)', r'\|Side Type=\2 \1',s)
>
You could've used the inline flag "(?m)" in the pattern:

   rn = re.sub(r'(?m)^\|Type=(.*)$^\|Side=(.*)$', r'|Side Type=\2 \1',s)



More information about the Python-list mailing list