regex expression to match fraction

Viewed 165

I want to write a python regex expression to match following text

<   0 | d/dR |    1>

I could do something like this

r"<\s*(\d+)\s*\|\s*xx\s*\|\s*(\d+)\s*>"

but can not figure out how to do the fraction part in the middle (d/dR) represented as xx. Any help? Thank you!!

1 Answers

You can use

<\s*(\d+)\s*\|\s*([^<>]*?)\s*\|\s*(\d+)\s*>

See the regex demo.

Note the [^<>]*? is used here, it matches any zero or more chars other than < and > chars, as few as possible. < and > are negated because < and > are left- and right-hand delimiters here, and the negated character class helps prevent matching across < and getting unwelcome matched.

See the regex demo. Details:

  • < - a < char
  • \s* - zero or more whitespaces
  • (\d+) - Group 1: one or more digits
  • \s*\|\s* - | enclosed with zero or more whitespaces
  • ([^<>]*?) - Group 2: any zero or more chars other than < and > chars, as few as possible
  • \s*\|\s* - | enclosed with zero or more whitespaces
  • (\d+) - Group 3: one or more digits
  • \s* - zero or more whitespaces
  • > - a > char.
Related