正则表达式适用于Linux,但不适用于Solaris

时间:2015-02-03 15:41:39

标签: c++ regex linux solaris

我写了一个C ++程序,它解析写得太快的日志文件,因为任何人都可以读取它。 该程序应该找到每一行都有一个像'WARN'但不是“警告”这个词。 正如我所说它在Linux上运行良好但在Solaris上运行不正常。 我将regcomp()REG_EXTENDED标志一起使用。

regcomp()不会抛出错误,regexec会返回1 (REG_NOMATCH)

我使用regexec()regcomp()

我有这个非常长的正则表达式,它在Linux中运行良好

.*([^A-Za-z1-9]|\s)(error|ERROR|Error|fatal|FATAL|Fatal|excep|EXCEP|Excep|warn|WARN|Warn|problem|PROBLEM|Problem|fail|FAIL|Fail|fault|Fault|FAULT|cannot|Cannot|CanNot|CANNOT|cannot|Cannot|CANNOT|cant|can't|Cant|Can't|unable|Unable|UNABLE|mandatory|Mandatory|MANDATORY|mustnot|Mustnot|MustNot|MUSTNOT|couldnot|Couldnot|CouldNot|COULDNOT|didnot|Didnot|DidNot|DIDNOT|violat|Violat|VIOLAT|damage|Damage|DAMAGE|missing|Missing|notfinish|mandatory|Mandatory|MANDATORY|broken|Broken|BROKEN)([^a-zA-Z1-9]).*

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。 问题是linux不需要正则表达式字符串开头的^或字符串末尾的$。 但是对于Solaris函数来说似乎是必要的。