Home > Software engineering >  Regex to find 5 integers before last underscore of filename
Regex to find 5 integers before last underscore of filename

Time:01-14

I need to find 5 integers before the last underscore in a given filename.

Example string:

X130874_W907025343_Txt.pdf

I need to find 25353

The closest I came was (?<=_)[^_] (?=[^_](.{5})_)

CodePudding user response:

Use a lookahead after 5 digits that matches an underscore followed by no undercores until the end.

\d{5}(?=_[^_]*$)

CodePudding user response:

Use

[0-9]{5}(?=_(?!.*_))

See regex proof.

EXPLANATION

--------------------------------------------------------------------------------
  [0-9]{5}                 any character of: '0' to '9' (5 times)
--------------------------------------------------------------------------------
  (?=                      look ahead to see if there is:
--------------------------------------------------------------------------------
    _                        '_'
--------------------------------------------------------------------------------
    (?!                      look ahead to see if there is not:
--------------------------------------------------------------------------------
      .*                       any character except \n (0 or more
                               times (matching the most amount
                               possible))
--------------------------------------------------------------------------------
      _                        '_'
--------------------------------------------------------------------------------
    )                        end of look-ahead
--------------------------------------------------------------------------------
  )                        end of look-ahead
  •  Tags:  
  • Related