使用正则表达式从 1 行字符串中提取数字
Extract numbers from a 1 line string using regex
我有一个看起来像这样的单行字符串:
{"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}}
我想提取“take”部分后的所有数字,所以在我的例子中,输出如下所示:
125
365
15
到目前为止我尝试过的是使用 took":(\d{1,6}),"(.*)
作为正则表达式。但由于它是一个单行字符串,它只提取第一次出现而忽略其他。
您可以使用
查找内容: took":(\d+)|(?s)(?:(?!took":\d).)*
替换为:(?{1}\n)
详情:
took":
- 文字
(\d+)
- 捕获到第 1 组的一个或多个数字
|
- 或
(?s)
- 开启 DOTALL 模式(.
现在匹配换行字符)
(?:(?!took":\d).)*
- 任何单个字符,零次或多次,尽可能多,不启动 took":
+ 数字字符序列。
(?{1}\n)
条件替换模式这样替换:
(?{1}
- 如果第 1 组匹配
\n
- 用组 1 和换行符替换匹配项
)
- 否则,替换为空字符串。
我有一个看起来像这样的单行字符串:
{"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}}
我想提取“take”部分后的所有数字,所以在我的例子中,输出如下所示:
125
365
15
到目前为止我尝试过的是使用 took":(\d{1,6}),"(.*)
作为正则表达式。但由于它是一个单行字符串,它只提取第一次出现而忽略其他。
您可以使用
查找内容: took":(\d+)|(?s)(?:(?!took":\d).)*
替换为:(?{1}\n)
详情:
took":
- 文字(\d+)
- 捕获到第 1 组的一个或多个数字|
- 或(?s)
- 开启 DOTALL 模式(.
现在匹配换行字符)(?:(?!took":\d).)*
- 任何单个字符,零次或多次,尽可能多,不启动took":
+ 数字字符序列。
(?{1}\n)
条件替换模式这样替换:
(?{1}
- 如果第 1 组匹配\n
- 用组 1 和换行符替换匹配项
)
- 否则,替换为空字符串。