How can I get part of regex match as a variable in python?

53,894

Solution 1

See: Python regex match objects

>>> import re
>>> p = re.compile("lalala(I want this part)lalala")
>>> p.match("lalalaI want this partlalala").group(1)
'I want this part'

Solution 2

If you want to get parts by name you can also do this:

>>> m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcom Reynolds")
>>> m.groupdict()
{'first_name': 'Malcom', 'last_name': 'Reynolds'}

The example was taken from the re docs

Solution 3

import re
astr = 'lalalabeeplalala'
match = re.search('lalala(.*)lalala', astr)
whatIWant = match.group(1) if match else None
print(whatIWant)

A small note: in Perl, when you write

$string =~ m/lalala(.*)lalala/;

the regexp can match anywhere in the string. The equivalent is accomplished with the re.search() function, not the re.match() function, which requires that the pattern match starting at the beginning of the string.

Solution 4

there's no need for regex. think simple.

>>> "lalala(I want this part)lalala".split("lalala")
['', '(I want this part)', '']
>>> "lalala(I want this part)lalala".split("lalala")[1]
'(I want this part)'
>>>

Solution 5

import re
match = re.match('lalala(I want this part)lalala', 'lalalaI want this partlalala')
print match.group(1)
Share:
53,894
Lucas
Author by

Lucas

Updated on July 16, 2022

Comments

  • Lucas
    Lucas almost 2 years

    In Perl it is possible to do something like this (I hope the syntax is right...):

    $string =~ m/lalala(I want this part)lalala/;
    $whatIWant = $1;
    

    I want to do the same in Python and get the text inside the parenthesis in a string like $1.