Regex Help

Welcome Forums General PowerShell Q&A Regex Help

This topic contains 3 replies, has 4 voices, and was last updated by

2 years, 2 months ago.

  • Author
  • #61440

    Points: 1
    Rank: Member

    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.

  • #61441

    Points: 0
    Rank: Member

    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

  • #61478

    Points: 58
    Rank: Member
    $string = 'b10202.att.150317.tar.gz'
    $mymatch = [regex]::Matches($string,'\d+')
  • #61513

    Points: 1
    Rank: Member

    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.

The topic ‘Regex Help’ is closed to new replies.

denizli escort samsun escort muğla escort ataşehir escort kuşadası escort