我正在嘗試開發一個與系統日誌消息相匹配的Java程序。系統日誌消息不工作的Java正則表達式
的模式是這樣的:
"%FACILITY-[SUBFACILITY-]SEVERITY-MNEMONIC: description"
起初我這個正則表達式,它的工作的一些消息:
(%[a-zA-Z_-]+-[0-6]-[a-zA-Z_-]+[^\r\t\n]+)
現在我需要之前,只有部分匹配「:」 (即%FACILITY- [SUBFACILITY-]嚴重-助記符),所以我做了以下內容,不工作:
(%[a-zA-Z_-]+-[0-6]-[a-zA-Z_-]+)
我發現了一些在線測試頁面,令人驚訝的是第一個字符串匹配,但不是第二個(這是Java代碼)。
http://www.regexr.com/ - >匹配
http://www.regexplanet.com/advanced/java/index.html - >不匹配
這是我想匹配的字符串:做RCC檢查時可能出現
%HA-REDCON-4-FAILOVER_REQUEST[0x767443be74] Record Reboot History, reboot cause = 0x4000004, descr = Cause: Initiating switch-over.
%ROUTING-FIB-3-ASSERT
錯誤信息。
任何人都有這個想法嗎?我錯過了什麼?
在此先感謝。
要匹配':'之前的所有內容,請使用'^ [^:] +'正則表達式。請參閱https://regex101.com/r/kW5uY4/1(它也適用於Java)。只是不要使用「匹配」,因爲它會檢查整個字符串捕獲。或者,使用帶'matches'的捕獲組:'([^:] +):。*'。 –
如果@stribizhev的回答很有幫助,請將其標記爲已接受 – rpax