扩展的Posix正则表达式-使用“ ^”

时间:2019-03-15 20:51:31

标签: regex posix regex-negation

我有一个旧应用程序,该应用程序使用Extended POSIX正则表达式来评估返回码,以便做出一些决定。

返回码示例:

RETCODE = 0 SUCCESS
RETCODE = 3007 ERR3007
RETCODE = 3001 ERR3001
RETCODE = 13007 ERR13007
RETCODE = 3 ERR3
RETCODE = 1 ERR1

我写了一个正则表达式,当返回码为0或3007时考虑成功:“。* RETCODE =(0 | 3007)。*”

现在,当返回码是其他内容时,我需要另一个正则表达式来考虑FAILURE。这意味着返回码也不是0 NOR 3007。

注意1:我的应用程序仅将“ ^”视为否定字符。

注意2:我使用命令“ egrep”测试表达式

在这种情况下,您能帮我吗?

谢谢。

伊凡。

1 个答案:

答案 0 :(得分:0)

POSIX扩展的正则表达式不支持否定的超前断言。但是,常规语言的补语本身又是常规的,因此您可以为此编写一个正则表达式,即使您不打算精确否定匹配项,也确实很笨拙:

RETCODE = ([124-9][0-9]*|3|30|3[1-9][0-9]*|30[1-9][0-9]*|300|300[01-689][0-9]*|3007[0-9]+)[ ]