Jump to content
Sign in to follow this  
MrChiliCheese

StringRegExpReplace - multiple replacement

Recommended Posts

MrChiliCheese

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
guinness

No, just use StringReplace().


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
MrChiliCheese

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

Share this post


Link to post
Share on other sites
guinness

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


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
MrChiliCheese

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  

×