Nine Posted April 19, 2024 Posted April 19, 2024 (edited) I have this string : '{"Test":"test:test":"\"test:test\"":"Test:Test:Test":"Test"}' And I would like to remove all colon inside quotation marks and keep the others outside. My resulting string should be : '{"Test":"testtest":"\"testtest\"":"TestTestTest":"Test"}' Notice that some quotation marks maybe escapeded. I have this that works well, but I am curious if there is a way to perform the same in a single SRER. I tried multiple things but nothing has been successful... Local $sLine = '{"Test":"test:test":"\"test:test\"":"Test:Test:Test":"Test"}' ConsoleWrite($sLine & @CRLF) ; before ConsoleWrite(RemoveColon($sLine) & @CRLF) ;after Func RemoveColon($sText) Local $iPos = 1, $sFinal, $aTemp While True $aTemp = StringRegExp($sText, '(.*?")', 1, $iPos) ; get starting quote If @error Then ExitLoop $sFinal &= $aTemp[0] $iPos += StringLen($aTemp[0]) Do $aTemp = StringRegExp($sText, '(.*?")', 1, $iPos) $iPos += StringLen($aTemp[0]) $sFinal &= StringReplace($aTemp[0], ":", "") Until StringRight($aTemp[0], 2) <> '\"' ; till closing quote WEnd Return $sFinal & StringRegExp($sText, "(.*)", 1, $iPos)[0] EndFunc of course 'test' can be anything Edited April 20, 2024 by Nine “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Debug Messages Monitor UDF Screen Scraping Round Corner GUI UDF Multi-Threading Made Easy Interface Object based on Tag
Andreik Posted April 19, 2024 Posted April 19, 2024 (edited) Negative lookahead: Local $sLine = '{"Test":"test:test":"\"test:test\"":"Test:Test:Test":"Test"}' ConsoleWrite(StringRegExpReplace($sLine, ':(?!")', '') & @CRLF) or a more precise pattern that is aware of possible spaces: Local $sLine = '{"Test" : "test : test" : "\"test : test\"" : "Test : Test : Test" : "Test"}' ConsoleWrite(StringRegExpReplace($sLine, '((?<![" ])(?: *):(?: *)(?![" ]))', '') & @CRLF) Edited April 19, 2024 by Andreik Nine 1
jchd Posted April 20, 2024 Posted April 20, 2024 If you're certain that the format of your data is always a series of tokens enclosed in double quotes separated by columns, you can make it simple: Local $s = '{"Test":"test:test":"\"test:test\"":"Test:Test:Test":"Test"}' Local $t = StringRegExpReplace($s, '(?<!"):(?!")', '') Nine 1 This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe hereRegExp tutorial: enough to get startedPCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta. SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)
Nine Posted April 20, 2024 Author Posted April 20, 2024 Thank you both for putting me in the right direction. I was looking at way too complex solutions while the obvious was escaping me. Like you showed me, all I want is to remove ":" between "\w" characters. This pattern works perfect for my need : '(?<=\w):(?=\w)' “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Debug Messages Monitor UDF Screen Scraping Round Corner GUI UDF Multi-Threading Made Easy Interface Object based on Tag
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