buymeapc Posted May 29, 2014 Share Posted May 29, 2014 (edited) Hi all, So, I have a few regex's that are trying to pull out versions from file paths, but the file paths are not quite the same. Is there a way I can get just the version out of the paths? Is there a way to do it with one regex? Here's my attempt at it. Thank you! Dim $paths[3] = ["\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0704A\setup.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0705A.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0706A_(Workstation).exe"] For $i = 0 To 2 $aMatches = StringRegExp($paths[$i], "(?<=_v)[a-zA-Z\\.\\r\\n0-9]*(?=_(Workstation).exe)", 3) If IsArray($aMatches) Then ConsoleWrite($aMatches[0] & @CRLF) Else $aMatches = StringRegExp($paths[$i], "(?<=_v)[a-zA-Z\\.\\r\\n0-9]*(?=\\setup.exe)", 3) If IsArray($aMatches) Then ConsoleWrite($aMatches[0] & @CRLF) Else $aMatches = StringRegExp($paths[$i], "(?<=_v)[a-zA-Z\\.\\r\\n0-9]*(?=.exe)", 3) If IsArray($aMatches) Then ConsoleWrite($aMatches[0] & @CRLF) EndIf EndIf Next Edited May 29, 2014 by buymeapc diandiand163 1 Link to comment Share on other sites More sharing options...
guinness Posted May 29, 2014 Share Posted May 29, 2014 Only going by your expected output. Local $aPaths = [ _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0704A\setup.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0705A.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0706A_(Workstation).exe"] Local $aMatches = 0 For $i = 0 To UBound($aPaths) - 1 $aMatches = StringRegExp($aPaths[$i], "(?<=_v)(\w+)[\.\\_]", 3) If not @error Then ConsoleWrite($aMatches[0] & @CRLF) Next UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
mikell Posted May 29, 2014 Share Posted May 29, 2014 StringRegExp($aPaths[$i], "_v([^\W_]+)", 3) Link to comment Share on other sites More sharing options...
buymeapc Posted May 30, 2014 Author Share Posted May 30, 2014 Wow, those are way shorter than my regex! They work great! Thank you both for the help!! Link to comment Share on other sites More sharing options...
buymeapc Posted May 30, 2014 Author Share Posted May 30, 2014 One more stumbling block, I'm afraid. It appears that element 3 of the array has a version that does not coincide with the regex. It returns "1" since it's told to gather all between the "_v" and "." or "_". I've tried a few things and I can't quite get the regex to spit out a version if ".", "_", or ".exe" is encountered. How can I tell the regex to do this? Local $aPaths[5] = [ _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0704A\setup.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0705A.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\SingleSolution\_PriorReleases\CYC_v5.00.00_(SingleSolution)\CYC-Preview\2012-08-30\WPS_NC_V1110.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\~Utilities\_PriorReleases\FileTool\FileTool_v1.4.2.8.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0706A_(Workstation).exe"] Local $aMatches = 0 For $i = 0 To UBound($aPaths) - 1 ;$aMatches = StringRegExp($aPaths[$i], "(?i)_v([^\W_]+)", 3) $aMatches = StringRegExp($aPaths[$i], "(?i)(?<=_v)(\w+)[\.\\_]", 3) If not @error Then ConsoleWrite($aMatches[UBound($aMatches) - 1] & @CRLF) Next Link to comment Share on other sites More sharing options...
BrewManNH Posted May 30, 2014 Share Posted May 30, 2014 (edited) When you change the playing field, the rules have to change with them. That 4th file name doesn't match the others, so of course it's not going to work with it. Edited May 30, 2014 by BrewManNH If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
Solution jdelaney Posted May 30, 2014 Solution Share Posted May 30, 2014 (edited) Might be easier just to...assuming this is a network share. FileGetVersion This gets them...but it's a stretch.: Local $aPaths[5] = [ _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0704A\setup.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0705A.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\SingleSolution\_PriorReleases\CYC_v5.00.00_(SingleSolution)\CYC-Preview\2012-08-30\WPS_NC_V1110.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\~Utilities\_PriorReleases\FileTool\FileTool_v1.4.2.8.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0706A_(Workstation).exe"] Local $aMatches = 0 For $i = 0 To UBound($aPaths) - 1 ;$aMatches = StringRegExp($aPaths[$i], "(?i)_v([^\W_]+)", 3) $aMatches = StringRegExp($aPaths[$i], "(?i)(?<=_v)([\d\.]+\w?)[\.\\_].*exe", 3) If not @error Then ConsoleWrite($aMatches[UBound($aMatches) - 1] & @CRLF) Next If you want both versions on the 3rd one: Local $aPaths[5] = [ _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0704A\setup.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0705A.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\SingleSolution\_PriorReleases\CYC_v5.00.00_(SingleSolution)\CYC-Preview\2012-08-30\WPS_NC_V1110.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\~Utilities\_PriorReleases\FileTool\FileTool_v1.4.2.8.exe", _ "\\10.231.254.23\f$\Installs\_SingleEXE\Interfaces\Billing_v0706A_(Workstation).exe"] Local $aMatches = 0 For $i = 0 To UBound($aPaths) - 1 ;$aMatches = StringRegExp($aPaths[$i], "(?i)_v([^\W_]+)", 3) $aMatches = StringRegExp($aPaths[$i], "(?i)(?<=_[v])([\d\.]+\w?)[\.\\_]", 3) For $j = 0 to UBound($aMatches)-1 ConsoleWrite(@TAB & "Match=[" & $aMatches[$j] & "]" ) Next ConsoleWrite ( @CRLF) Next Match=[0704A] Match=[0705A] Match=[5.00.00] Match=[1110] Match=[1.4.2.8] Match=[0706A] Edited May 30, 2014 by jdelaney IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window. Link to comment Share on other sites More sharing options...
mikell Posted May 30, 2014 Share Posted May 30, 2014 $aMatches = StringRegExp($aPaths[$i], "(?i)_v((?:[[:alnum:].](?!exe))+)(?!.+\\)", 3) If you have others exceptions to add, please mention them all together Link to comment Share on other sites More sharing options...
buymeapc Posted May 30, 2014 Author Share Posted May 30, 2014 I was originally using FileGetVersion(), but since these are older installer exe's, they have the version of InstallShield set as the file version, so it would return "10.50", which is why I've been trying to get a regex going. Since these are UNC paths, using FileGetVersion() takes a bit, too since I was originally using it twice - once for "ProductVersion" (which this regex will replace) and a second for "ProductName". Now I only have to use it for the latter. Your second regex works like a dream! Thank you!! Link to comment Share on other sites More sharing options...
guinness Posted May 30, 2014 Share Posted May 30, 2014 Not fair. I didn't have chance to join in on the second round. jdelaney 1 UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now