【发布时间】:2021-05-18 15:24:04
【问题描述】:
我有一个如下所示的单行字符串:
{"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}}
我想提取“took”部分之后的所有数字,所以在我的例子中,输出如下所示:
125
365
15
到目前为止,我尝试使用 took":(\d{1,6}),"(.*) 作为正则表达式。但由于它是一个单行字符串,它只提取第一个出现而忽略其他的。
【问题讨论】:
-
您可以使用此模式获取数字
"took":\K\d+ -
或者,找到
took":(\d+)|(?s)(?:(?!took":\d).)*并替换为(?{1}$1\n) -
@WiktorStribiżew 这是一个有趣的查找/替换条件。
-
@WiktorStribiżew 谢谢它很好用!如果您不介意解释答案背后的逻辑,我很乐意接受它作为答案。