簡體   English   中英

正則表達式在Linux上有效,但在Solaris上無效

[英]Regular expression works on Linux but not on Solaris

我編寫了一個C ++程序,該程序分析寫入速度太快的日志文件,以至於任何人都無法讀取它。 程序應該找到每行帶有“ WARN”的單詞,而不是“ WARNA”。 如我所說,它在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]).*

我自己解決了這個問題。 問題是linux不需要正則表達式字符串開頭的^或字符串結尾的$ 但是對於Solaris功能,這似乎是必需的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM