Jump to content
Sign in to follow this  
gcue

stringregexp to get part of file path

Recommended Posts

gcue

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

 

Share this post


Link to post
Share on other sites
trancexx

There are many patterns that can be written, Here's one:

$version = StringRegExpReplace($string, ".*?\\AutoIt\h(?U)(.*)\\.*?", "$1")

 


♡♡♡

.

eMyvnE

Share this post


Link to post
Share on other sites
gcue

awesome.

thank you!

Share this post


Link to post
Share on other sites
ViciousXUSMC

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?

Share this post


Link to post
Share on other sites
JohnOne

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.

Share this post


Link to post
Share on other sites
mikell

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") )  ; trancexx

Edit
The most reliable (?) may be this one

StringRegExpReplace($string, ".*\\AutoIt\hv([\d.]+).*", "$1")

 

Edited by mikell

Share this post


Link to post
Share on other sites
iamtheky
$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 by boththose
* where I shouldve +

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Share this post


Link to post
Share on other sites
trancexx

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 by trancexx
  • Like 1

♡♡♡

.

eMyvnE

Share this post


Link to post
Share on other sites
ViciousXUSMC

Cool Thanks Trance

Share this post


Link to post
Share on other sites
guinness

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

  • Like 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 parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
jguinch

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

 

Share this post


Link to post
Share on other sites
mikell

jguinch,
You will make JO howl again  :D

$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)

 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×