4 ms·
Ok, but if I found a match I get stuck in a incomplete result: //Dude, and the data above what? "username": "mamcx", "version": 3 }
by mamcx 8y ago
Ok, but if I found a match I get stuck in a incomplete result:
//Dude, and the data above what?
"username": "mamcx",
"version": 3
}
So this need to backtrack a lot?
Or this scan for separators ({}) then in each scan it again scan per line?
for line.scan("{", "}"):
for result.find("mamcx")
- kornish 8y agoYou may want to rethink your log format to have a single (minified JSON) entry per line - it can make your life easier in a variety of ways. Out of interest, what library are you using that logs single entries on multiple lines?
- mamcx 8y agoI don't always control my inputs. I use a variety of libraries (like explained here: https://www.reddit.com/r/rust/comments/8ygbvy/state_of_rust_for_iosandroid_on_2018/ https://www.reddit.com/r/rust/comments/8ygbvy/state_of_rust_...) so I'm more for the overall idea. But for this specific case I use https://www.newtonsoft.com/json https://www.newtonsoft.com/json. Eventually could incorporate the idea in my arsenal and maybe build a format streaming pipeline utility that can use across platforms.
- virgilp 8y agoYou can do it without backtracking with a very simple deterministic finite automaton - keep track of <block_start, block_end, condition_met> as you pour through the input. But yes, it's a bit more complicated, it's preferable to just have one line per "log item"