Home > other >  Matching a single numeric digit after the second period of a string
Matching a single numeric digit after the second period of a string

Time:09-13

I have a series of data that I would like to extract a single digit from. I will be using python to execute the regex. This previous post looked promising, but I couldn't get anything working as of yet. More specifically I would like the first numeric digit after the second "." of each string.

This is my attempted regex: [^.][^.]?([0-9])

The below example includes test data with the targeted number in bold. I plan to use this to iterate through a table, so it only needs to work for each individual string, not all of them at once.

Example data:

AR0.RRPG.105

AR6.TR0.500

AR0.GGF0.2FEH

AR0.DER.M15

CodePudding user response:

^[^\.]*\.[^\.]*\.[^\.]*?([0-9])

  • First as many non-dot characters as possible up to the first dot
  • Same up to the second dot
  • Finally as few non-dot characters as possible, up to the first digit, which is captured

CodePudding user response:

If you can have a long string of non digits first following after the last dot (before reaching the first digit), you can also exclude matching both a dot and a digit in the negated character class [^.\d]* to prevent some backtracking.

^[^.]*\.[^.]*\.[^.\d]*(\d)

See a regex demo.

Note that you don't have to escape the \. in the character class, and the using [^.] can also match a newline.

  • Related