Regex 正则表达式匹配错误代码不等于';0';

Regex 正则表达式匹配错误代码不等于';0';,regex,Regex,我以为这很容易,但我做错了什么 我有大量的日志记录,其中有一行“ErrorCode:[number]”可以找到。我想列出[number]不等于“0”的所有事件 正则表达式:ErrorCode\:[^0] 但这也与ErrorCode:[空格]匹配 如何将反向匹配设置为“强制”以使ErrorCode:0不再匹配?您可以使用[1-9]字符类: ErrorCode:[1-9] 它将匹配ErrorCode:,后跟1到9之间的任何数字,不包括0 要提取数字,请使用 ErrorCode:([1-9][0-9

我以为这很容易,但我做错了什么

我有大量的日志记录,其中有一行“ErrorCode:[number]”可以找到。我想列出[number]不等于“0”的所有事件

正则表达式:
ErrorCode\:[^0]

但这也与ErrorCode:[空格]匹配


如何将反向匹配设置为“强制”以使ErrorCode:0不再匹配?

您可以使用
[1-9]
字符类:

ErrorCode:[1-9]
它将匹配
ErrorCode:
,后跟
1
9
之间的任何数字,不包括
0

要提取数字,请使用

ErrorCode:([1-9][0-9]*)
并获取组1的值。看

要匹配
ErrorCode:010
(带前导零)而不是
ErrorCode:000
,请使用

ErrorCode:0*([1-9][0-9]*)

详细信息

  • ErrorCode:
    -文字子字符串
  • 0*
    -零个或更多
    0
    字符
  • ([1-9][0-9]*)
    -第1组匹配以下序列:
    • [1-9]
      -任何ASCII数字,但
      0
    • [0-9]*
      -任何零个或更多ASCII数字

此正则表达式允许所有错误,包括错误代码包含零(不等于零)的错误:

或者,采用不同的方法:

ErrorCode\:(?!0)\b

不过要小心,错误代码
102
不会被这些表达式捕获。。。看到这个答案:@MathieuRodic:OP对布尔返回值感兴趣,据我所知。我从问题中推断出来。顺便问一下,您是在外部工具中还是在代码中使用它?
ErrorCode\:(?!0)\b