Jump to content

stringregexp to get part of file path


Recommended Posts

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

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

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
Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

♡♡♡

.

eMyvnE

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

 

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...