Jeremy Chen
Jeremy Chen

Reputation: 1347

how do I use f-string with regex in Python

This code works if I use raw strings only. However, as soon as I add f to r it stops working.

Is there a way to make f-strings work with raw strings for re?

import re

lines = '''

    04/20/2009; 04/20/09; 4/20/09; 4/3/09
    Mar-20-2009; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009;
    20 Mar 2009; 20 March 2009; 20 Mar. 2009; 20 March, 2009
    Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009
    Feb 2009; Sep 2009; Oct 2010
    6/2008; 12/2009
    2009; 2010

'''
rmonth = 'a'
regex = fr'(\d{1,2})/(\d{1,2})/(\d{4}|\d{2})'
date_found = re.findall(regex, lines)

date_found

Upvotes: 53

Views: 45758

Answers (1)

Blckknght
Blckknght

Reputation: 104762

The new fstrings in Python interpret brackets in their own way. You can escape brackets you want to see in the output by doubling them:

regex = fr'(\d{{1,2}})/(\d{{1,2}})/(\d{{4}}|\d{{2}})'

Upvotes: 96

Related Questions