Regex Help

I had a colleague reach out to me for a little PowerShell Regex help. He has a series of filenames that have a six-digit date embedded towards the end, and I was able to initially come up with a partial solution:

$myFileName = "backup_file_150317.txt.gz"
$myDate = $myFileName -replace("[^\d{6}]") 

Then, I noticed that one of the sample filenames he submitted had two sets of digits, so I came up with this:

$myFileName = "b10202.att.150317.tar.gz"
$myDate = ($myFileName -replace '[^\d]') -replace '.*?(?=.{6}$)'

This seems to work, but as I’m not especially a regex wizard, I was wondering if anybody else could come up with any further optimization of the regex? I’ve tried a number of things to try and condense the two -replace statements and have come up empty.

Give this a try:

$date = $fileName -replace '^.+(\d{6})\..+\..+$','$1'

Notice that the file name must follow the pattern:

... six-digit dot extension dot extension


$string = 'b10202.att.150317.tar.gz'
$mymatch = [regex]::Matches($string,'\d+')

It all depends o what filenames you have.

“backup_file_150317.txt.gz” -match “(\d+).\w+.\w+$”

If you have all double “extentios” on your filenames,this shoud work.