Sign in to follow this  
Followers 0
MrChiliCheese

StringRegExpReplace - multiple replacement

5 posts in this topic

Wrapping my head around this.

I have a string like "beer_coffee_salad", I want to replace

beer --> cheese

coffee --> cold

salad --> green

Is it possible put this in one StringRegExpReplace?

StringRegExpReplace($Value, "beer|coffee|salad", "cheese|cold|green", 1)

Tried to use the backreference, but it doesn't work like want it to...

Share this post


Link to post
Share on other sites



No, just use StringReplace().


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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: 04/09/2015

Share this post


Link to post
Share on other sites

Thank you. But I will still use StringRegExpReplace as it is much faster :)

Share this post


Link to post
Share on other sites

Just remember to escape meta characters. Also where did you hear it was faster?' Did you test it?


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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: 04/09/2015

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

I took care of the meta chars, thanks!

Speed was verified by testing. Just added some Output to my script, see for yourself:

Replacing of 2232 strings (TextLength: 408063 chars) with StringRegExpReplace took: 2034.18ms
Replacing of 2232 strings (TextLength: 408063 chars) with StringReplace took: 85174.07ms

Replacing of 2232 strings (TextLength: 413370 chars) with StringRegExpReplace took: 2116.97ms
Replacing of 2232 strings (TextLength: 413370 chars) with StringReplace took: 82796.39ms

Replacing of 2232 strings (TextLength: 717487 chars) with StringRegExpReplace took: 4434.87ms
Replacing of 2232 strings (TextLength: 717487 chars) with StringReplace took: 150590.89ms

Replacing of 2232 strings (TextLength: 727232 chars) with StringRegExpReplace took: 4800.38ms
Replacing of 2232 strings (TextLength: 727232 chars) with StringReplace took: 153054.85ms

Replacing of 2232 strings (TextLength: 117554 chars) with StringRegExpReplace took: 426.82ms
Replacing of 2232 strings (TextLength: 117554 chars) with StringReplace took: 24429.03ms

Replacing of 2232 strings (TextLength: 123024 chars) with StringRegExpReplace took: 462.99ms
Replacing of 2232 strings (TextLength: 123024 chars) with StringReplace took: 25005.11ms

And here is the piece of code:

$tiStart = TimerInit()
    For $iCounter = 0 To UBound($aField, 1) - 1
        _GUI_SetData(100 * ($iCounter / (UBound($aField, 1) - 1)))
        StringRegExpReplace($sText, $aField[$iCounter][0], StringReplace($aField[$iCounter][1], "\", "\\"))
    Next
    ConsoleWrite("Replacing of " & UBound($aField, 1) & " strings (TextLength: " & StringLen($sText) & " chars) with StringRegExpReplace took:" & @TAB & Stringformat("%.2f",TimerDiff($tiStart)) & "ms" & @CRLF)
    $tiStart = TimerInit()
    For $iCounter = 0 To UBound($aField, 1) - 1
        _GUI_SetData(100 * ($iCounter / (UBound($aField, 1) - 1)))
        StringReplace($sText, $aField[$iCounter][0], $aField[$iCounter][1])
    Next
    ConsoleWrite("Replacing of " & UBound($aField, 1) & " strings (TextLength: " & StringLen($sText) & " chars) with StringReplace took:" & @TAB & Stringformat("%.2f",TimerDiff($tiStart)) & "ms" & @CRLF)
Edited by MrChiliCheese

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  
Followers 0