Working with 2014-06-14-1506p here is a helpful Regexp to reorder it

Using a most excellent tool from (den4b called Renamer) - one of the few tools I happily purchased and want to promote it!

The regular expression to rearrange the date (helpful for date-stamping files) is:

(.*)([0-9]{4}[-_]{0,1}[0-1][0-9][-_]{0,1}[0-3][0-9])[-_]{0,1}([0-2][[0-9][0-5][0-9][a,p]{0,1}){0,1}[-]{0,1}(.*)
---1-----------------------------------------------2_________-------------------------------------3________----4

then it can be easily reordered:
$2-$3-$1-$4

For those of you unfamiliar with REGEX or ReGularEXpressions- it breaks down like this:


  • (.*)  =  $1
    • will match zero or more of any characters
    • By enclosing it in parenthesis () it becomes a sub expression. 
    • Since it is the first subexpression it can be referenced to be reordered with $1 in Renamer.
  • (   =  left parenthesis start of the second expression  $2  for the year-month-day
    • left parenthesis is the the start of the next expression to Capture. If the parenthesis weren't there the characters would match and be lost
    • [0-9]{4}  for the year 0000 through 9999
      • Square brackets [ ] enclose a set of characters for reference. 
      • 0-9 inside the brackets species a range of all characters 0 through 9
      • {4} Curled brackets indicate the number of characters to match in the previous expression.
      • By combining [0-9]{4} means 4 numbers, zero through nine- perfect for a date 2014
      • alternatively ([1-2]{1}[0-9]{3}) should cover the last century 1000 through 29
    • [-_]{0,1} is for a literal dash or underscore character - zero or one of
    • [0-1][0-9] for the month 
      • alternatively [0-1]{0,1}[0-9]  would allow for 06 or 6 for the month 

    • [-_]{0,1} is for a literal dash or underscore character
    • [0-3][0-9] for the day 01 through 39
      • alternatively [0-3]{0,1}[0-9]  would allow for a single digit day
  • ) =  right parenthesis END of the second expression  $2  for the year-month-day
  • [-_]{0,1} is for a literal dash or underscore character - zero or one of
  • (   =  left parenthesis start of the third expression  $3 
    • [0-2][0-9][0-5][0-9] = for time 0000 through 2959 (Covers through 2399 24 hour clock)
    • [am,a,p,pm]{0,1}  = zero or one of a, am, p, pm for  am pm--There is a glitch here I cannot figure out how to extend so it has the matching for am|a|pm|p - since the letters are the same it will not match the characters
  • ){0,1} = Right parenthesis END of the third expression $3 {0,1} means zero or one of these can exist
  • [-_]{0,1} is for a literal dash or underscore character - zero or one of
  • (.*) = $4 the 4th expression- the remainder (zero or more) of the remaining characters- in case the match is in front of the expression

Comments

Popular posts from this blog

Revit area plans adding new types and references (Gross and rentable)

Powerpoint countdown and current time in slides VBA

Revit Python in Visual Studio Revit Stubs 2022 for Python Revit Intellisense