I have a one line string that looks like this:
{"took":125,"timed_out":false,"_shards":{"total":10,"successful":10,"skipped":0,"failed":0}}{"took":365,"timed_out":false,"_shards":{"total":10,"successful":10,"skipped":0,"failed":0}}{"took":15,"timed_out":false,"_shards":{"total":10,"successful":10,"skipped":0,"failed":0}}
I would like to extract all the numbers after the "took" part, so in my case the output would look like this:
125
365
15
What I've tried so far is using took":(\d{1,6}),"(.*)
as a regex. But since its a one line string, it only extracts the first occurence and ignores the others.
You can use
Find What: took":(\d+)|(?s)(?:(?!took":\d).)*
Replace With: (?{1}$1\n)
Details:
took":
- literal text(\d+)
- one or more digits captured into Group 1|
- or(?s)
- set the DOTALL mode on (.
matches line break chars now)(?:(?!took":\d).)*
- any single char, zero or more times, as many as possible, that does not start a took":
+ digit char sequence.The (?{1}$1\n)
conditional replacement pattern replaces this way:
(?{1}
- if Group 1 is matched
$1\n
- replace the match with Group 1 and a newline)
- else, replace with an empty string.