为什么我不能在子字符串中捕获一个以上的数字?

安吉特·戈亚尔

我正在创建正则表达式以从日志文件中提取各种字段。我使用一些工具创建了一个正则表达式,它几乎完成了。唯一的事情是对于一个字段,它只提取一位数字而不是完整数字。为了更好地理解,我已将其保存到以下链接。

我的正则表达式演示

图案:

/(?=[^P]*(?:ParNew|P.*ParNew|PSYoungGen|DefNew))^(?:).*(?P<ParNew_before_1>\d)K\->(?P<ParNew_after_1>\d+)K\((?P<young_heap_size>\d+)K\), (?P<par_new_duration>\d+\.\d+) secs\] (?P<ParNew_before_2>\d+)K\->(?P<ParNew_after_2>\d+)K\((?P<total_heap_size>\d+)/

细绳:

146372.273: [GC146372.274: [ParNew: 378633K->88155K(419456K), 0.0313803 secs] 9893391K->9602913K(12478080K), 0.0320299 secs] [Times: user=0.32 sys=0.01, real=0.03 secs]

电流输出:

Full match      `146372.273: [GC146372.274: [ParNew: 378633K->88155K(419456K), 0.0313803 secs] 9893391K->9602913K(12478080`
Group `ParNew_before_1`     `3`
Group `ParNew_after_1`      `88155`
Group `young_heap_size`     `419456`
Group `par_new_duration`    `0.0313803`
Group `ParNew_before_2`     `9893391`
Group `ParNew_after_2`      `9602913`
Group `total_heap_size`     `12478080`

预期输出:

Full match      `146372.273: [GC146372.274: [ParNew: 378633K->88155K(419456K), 0.0313803 secs] 9893391K->9602913K(12478080`

团体 ParNew_before_1 378633

Group `ParNew_after_1`      `88155`
Group `young_heap_size`     `419456`
Group `par_new_duration`    `0.0313803`
Group `ParNew_before_2`     `9893391`
Group `ParNew_after_2`      `9602913`
Group `total_heap_size`     `12478080`

在上面的例子中:ParNew_before_1只提取一位数字的组。

维克多·斯特里比尤夫

这里我要注意三件事:

  • 前瞻应该放在之后^(仅在字符串的开头检查其模式会更有意义)
  • \d不会匹配超过1个位数,添加+后它来搭配1个或更多
  • .*太贪心了,用lazy .*?

^(?=[^P]*(?:ParNew|P.*ParNew|PSYoungGen|DefNew)).*?(?P<ParNew_before_1>\d+)K->(?P<ParNew_after_1>\d+)K\((?P<young_heap_size>\d+)K\), (?P<par_new_duration>\d+\.\d+) secs\] (?P<ParNew_before_2>\d+)K\->(?P<ParNew_after_2>\d+)K\((?P<total_heap_size>\d+)
 ^^^                                           ^  ^                      ^

看到这个正则表达式演示

此外,您不需要对-不在字符类内的进行转义

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

给定一个包含文件名的字符串,为什么我不能在Java中拆分一个字符串?

来自分类Dev

给定一个包含文件名的字符串,为什么我不能在Java中拆分一个字符串?

来自分类Dev

为什么我不能在 charts_flutter 中为饼图创建一个类字符串作为 domainFn

来自分类Dev

为什么我不能回显字符#!在一个bash字符串?

来自分类Dev

为什么我不能回显字符#!在一个bash字符串?

来自分类Dev

为什么我不能写一个静态字符串?

来自分类Dev

为什么我不能更改字符串中的子字符串?

来自分类Dev

为什么我不能在PHP中为类变量定义连接字符串?

来自分类Dev

为什么我不能在Python中检查Popen()的stderr的字符串等效性?

来自分类Dev

为什么我们不能在Java构造函数中传递字符串

来自分类Dev

为什么我不能在JavaScript中解析此json字符串?

来自分类Dev

为什么我不能在PHP中为类变量定义连接字符串?

来自分类Dev

为什么我不能在给定的字符串中替换\ n?

来自分类Dev

为什么我们不能在python中更改字符串的特定值

来自分类Dev

C ++:用一个以上的数字替换字符串中的字符?

来自分类Dev

在Python中,为什么我可以将字符串乘以数字,但不能添加字符串和数字?

来自分类Dev

我需要一个正则表达式来捕获字符串中的数字

来自分类Dev

为什么不能替换字符串中的所有字符串,而是取回一个空字符串?

来自分类Dev

我可以在Firefox中单击一个按钮-为什么不能在Chrome中单击?

来自分类Dev

为什么我在 python 字符串中得到一个反斜杠

来自分类Dev

从字符串中删除停用词:为什么我有一个无限循环?

来自分类Dev

为什么我不能在“ Prolog + C”中存储一个变量的地址?

来自分类Dev

为什么我不能在zsh中定义一个名为path的只读变量?

来自分类Dev

为什么我不能在工作目录中创建一个新文件?

来自分类Dev

为什么我不能在另一个文件中重载<<操作符?

来自分类Dev

为什么我不能在另一个类中调用静态方法?

来自分类Dev

为什么我不能在 Chrome 中声明一个与函数体同名的 let 变量

来自分类Dev

当我将指针加1时为什么不能访问字符串中的下一个元素?

来自分类Dev

如果lisp中的字符串是向量,为什么不能使用svref访问第一个元素?

Related 相关文章

  1. 1

    给定一个包含文件名的字符串,为什么我不能在Java中拆分一个字符串?

  2. 2

    给定一个包含文件名的字符串,为什么我不能在Java中拆分一个字符串?

  3. 3

    为什么我不能在 charts_flutter 中为饼图创建一个类字符串作为 domainFn

  4. 4

    为什么我不能回显字符#!在一个bash字符串?

  5. 5

    为什么我不能回显字符#!在一个bash字符串?

  6. 6

    为什么我不能写一个静态字符串?

  7. 7

    为什么我不能更改字符串中的子字符串?

  8. 8

    为什么我不能在PHP中为类变量定义连接字符串?

  9. 9

    为什么我不能在Python中检查Popen()的stderr的字符串等效性?

  10. 10

    为什么我们不能在Java构造函数中传递字符串

  11. 11

    为什么我不能在JavaScript中解析此json字符串?

  12. 12

    为什么我不能在PHP中为类变量定义连接字符串?

  13. 13

    为什么我不能在给定的字符串中替换\ n?

  14. 14

    为什么我们不能在python中更改字符串的特定值

  15. 15

    C ++:用一个以上的数字替换字符串中的字符?

  16. 16

    在Python中,为什么我可以将字符串乘以数字,但不能添加字符串和数字?

  17. 17

    我需要一个正则表达式来捕获字符串中的数字

  18. 18

    为什么不能替换字符串中的所有字符串,而是取回一个空字符串?

  19. 19

    我可以在Firefox中单击一个按钮-为什么不能在Chrome中单击?

  20. 20

    为什么我在 python 字符串中得到一个反斜杠

  21. 21

    从字符串中删除停用词:为什么我有一个无限循环?

  22. 22

    为什么我不能在“ Prolog + C”中存储一个变量的地址?

  23. 23

    为什么我不能在zsh中定义一个名为path的只读变量?

  24. 24

    为什么我不能在工作目录中创建一个新文件?

  25. 25

    为什么我不能在另一个文件中重载<<操作符?

  26. 26

    为什么我不能在另一个类中调用静态方法?

  27. 27

    为什么我不能在 Chrome 中声明一个与函数体同名的 let 变量

  28. 28

    当我将指针加1时为什么不能访问字符串中的下一个元素?

  29. 29

    如果lisp中的字符串是向量,为什么不能使用svref访问第一个元素?

热门标签

归档