Park  Kwansik
Park Kwansik

Reputation: 13

How to use in python regular expression

I would like to use a numeric variable regular expression part.

What should I do if I want to use a variable in this part (?P<hh>\d)

I want to output lines that contain the input number.

Upvotes: 0

Views: 116

Answers (3)

Oscar Mederos
Oscar Mederos

Reputation: 29823

Your question isn't clear.

If you want to capture some specific part of the regex, you have to create groups (using pharentesis):

hh = sys.argv[1]
m = re.compile(r'(?P<hh>\d):(\d{2})')
match = m.match(hh)

print match.group(1)
print match.group(2)

for example, if hh = '1:23', the above code will print:

1
23


Now, if what you need is replace \d{2} by some variable, you can do:

variable = r'\d{2}'
m = re.compile(r'(?P<hh>\d):%s' % variable)

or if you just want to replace the 2, you can do:

variable = '2'
m = re.compile(r'(?P<hh>\d):\d{%s}' % variable)

Another option could be using:

r'(?P<hh>\d):{0}'.format(variable)

Upvotes: 1

Ben Reser
Ben Reser

Reputation: 5765

Using string interpolation:

m = re.compile(r'\d{%d}:\d{%d}' % (var1, var2))

If the vars aren't already integers you may need to convert types like so:

m = re.compile(r'\d{%d}:\d{%d}' % (int(var1), int(var2)))

Upvotes: 1

Blender
Blender

Reputation: 298166

You can pass it in as a string (I'd escape it first):

m = re.compile(re.escape(hh) + r':\d{2}')

Upvotes: 0

Related Questions