gcue Posted July 14, 2015 Share Posted July 14, 2015 hello world =)i am trying to get AutoIt v3.3.6.1 from the string below. The version may change so i essentially want to get whatever is between these 2 forward slashes /AutoIt vxxx/Thanks in advance!#include <array.au3> $msg_normal = 0 $string = '"C:\Program Files (x86)\AutoIt v3.3.6.1\SciTe\SciTe.exe" "%1"' $version = StringRegExpReplace($string, "[\w+]/\AutoIt[/w+]/\", "$1") Debug($version) Func Debug($variable1 = "", $variable2 = "", $variable3 = "") ;~ #include <array.au3> ;~ $msg_normal = 0 If IsArray($variable1) Then _ArrayDisplay($variable1) Else If $variable2 <> "" Then $variable1 &= @CRLF & $variable2 EndIf If $variable3 <> "" Then $variable1 &= @CRLF & $variable3 EndIf ClipPut($variable1) MsgBox($msg_normal, "Debug", $variable1) EndIf EndFunc ;==>Debug Link to comment Share on other sites More sharing options...
trancexx Posted July 14, 2015 Share Posted July 14, 2015 There are many patterns that can be written, Here's one:$version = StringRegExpReplace($string, ".*?\\AutoIt\h(?U)(.*)\\.*?", "$1") ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
gcue Posted July 14, 2015 Author Share Posted July 14, 2015 awesome.thank you! Link to comment Share on other sites More sharing options...
mikell Posted July 14, 2015 Share Posted July 14, 2015 Could easily be done without regex $version = StringTrimLeft(StringSplit($string, "\")[3], 8) Link to comment Share on other sites More sharing options...
ViciousXUSMC Posted July 14, 2015 Share Posted July 14, 2015 I have tried to learn RegEX and just totally suck at it.Care to break down part by part what your solution is doing so I can try to learn from it? Link to comment Share on other sites More sharing options...
JohnOne Posted July 14, 2015 Share Posted July 14, 2015 Could easily be done without regex $version = StringTrimLeft(StringSplit($string, "\")[3], 8) #include <array.au3> $msg_normal = 0 $string = '"C:\some other folder\with extra depth\AutoIt v3.3.14.0\SciTe\SciTe.exe" "%1"' $version = StringTrimLeft(StringSplit($string, "\")[3], 8) Debug($version) Func Debug($variable1 = "", $variable2 = "", $variable3 = "") ;~ #include <array.au3> ;~ $msg_normal = 0 If IsArray($variable1) Then _ArrayDisplay($variable1) Else If $variable2 <> "" Then $variable1 &= @CRLF & $variable2 EndIf If $variable3 <> "" Then $variable1 &= @CRLF & $variable3 EndIf ClipPut($variable1) MsgBox($msg_normal, "Debug", $variable1) EndIf EndFunc ;==>Debug AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
mikell Posted July 14, 2015 Share Posted July 14, 2015 (edited) JO, don't be rude You might always find particular situations where any expression will not work$string = '"C:\some other folder\AutoIt 3\with extra depth\AutoIt v3.3.14.0\SciTe\SciTe.exe" "%1"' Msgbox(0,"", StringRegExpReplace($string, ".*?\\AutoIt\h(?U)(.*)\\.*?", "$1") ) ; trancexxEditThe most reliable (?) may be this oneStringRegExpReplace($string, ".*\\AutoIt\hv([\d.]+).*", "$1") Edited July 14, 2015 by mikell Link to comment Share on other sites More sharing options...
iamtheky Posted July 14, 2015 Share Posted July 14, 2015 (edited) $string = '"C:\some other folder\AutoIt 3\with extra depth\AutoIt v3.3.14.0\SciTe\SciTe.exe" "%1"' msgbox(0, '' , stringregexp($string , "(AutoIt v[\d+\.]+)\\" , 3)[0]) Edited July 14, 2015 by boththose * where I shouldve + ,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-. |(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/ (_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_) | | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) ( | | | | |)| | \ / | | | | | |)| | `--. | |) \ | | `-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_| '-' '-' (__) (__) (_) (__) Link to comment Share on other sites More sharing options...
trancexx Posted July 14, 2015 Share Posted July 14, 2015 (edited) I have tried to learn RegEX and just totally suck at it.Care to break down part by part what your solution is doing so I can try to learn from it?This is for me?The function replaces original string with smallest portion "(?U)(.*)" of it that's preceded with any number of characters and then backslash, string "AutoIt" plus horizontal whitespace and followed with backslash and whatever. ".*?\\AutoIt\h(?U)(.*)\\.*?" ____ _ _____ _ ____ _ __ | | | | | | | / | | | \ \ \__________ / | | whitespace \ \ \ anything | \ | backslash \ | \ wanted portion \ backslash \ whatever AutoIt Edited July 14, 2015 by trancexx ViciousXUSMC 1 ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
ViciousXUSMC Posted July 15, 2015 Share Posted July 15, 2015 Cool Thanks Trance Link to comment Share on other sites More sharing options...
guinness Posted July 15, 2015 Share Posted July 15, 2015 It's not exactly trancexx's expression for the PCRE engine, but it's pretty close and really only for a visualisation of the regex: http://regexper.com/#.*%3F\\AutoIt\s(.*)\\.*%3F jvanegmond 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...
jguinch Posted July 15, 2015 Share Posted July 15, 2015 another regex :$string = '"C:\some other folder\AutoIt 3\with extra depth\AutoIt v3.3.14.0\SciTe\SciTe.exe" "%1"' $version = StringRegExp($string, "((?:\d+\.)+\d+)", 1)[0] MsgBox(0, "", $version)https://regex101.com/r/aW5hI6/1 Spoiler Network configuration UDF, _DirGetSizeByExtension, _UninstallList Firefox ConfigurationArray multi-dimensions, Printer Management UDF Link to comment Share on other sites More sharing options...
mikell Posted July 15, 2015 Share Posted July 15, 2015 jguinch,You will make JO howl again $string = '"C:\AutoIt 3\with extra depth\2015.07.15\AutoIt v3.3.14.0\SciTe\SciTe.exe" "%1"' $version = StringRegExp($string, "((?:\d+\.)+\d+)", 1)[0] MsgBox(0, "", $version) Link to comment Share on other sites More sharing options...
jguinch Posted July 15, 2015 Share Posted July 15, 2015 well, I just have to add a "v" at the beginning... Spoiler Network configuration UDF, _DirGetSizeByExtension, _UninstallList Firefox ConfigurationArray multi-dimensions, Printer Management UDF 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