49

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
petezurich
  • 9,280
  • 9
  • 43
  • 57
Jeremy Chen
  • 1,299
  • 2
  • 11
  • 18

1 Answers1

89

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}})'
Blckknght
  • 100,903
  • 11
  • 120
  • 169