我有一個字符串,如下所示。使用java的正則表達式
$Alarm:com.Alarm(a == 123 || (count == 12345 || (time matches "24" && pqr =="1")))
$Event:com.Event(b == 123 || (co == 12345 || (time matches "204" && pqr =="22")))
每當我遇到上述字符串我需要生成以下string.I意味着我需要追加字符串"from AlarmStream"
爲子$Alarm:com.Alarm(...)
和"from EventStream"
爲子串$Event:com.Event(...)
如下。
$Alarm:com.Alarm(a == 123 || (count == 12345 || (time matches "24" && pqr =="1"))) from AlarmStream
$Event:com.Event(b == 123 || (co == 12345 || (time matches "204" && pqr =="22"))) from EventStream
我目前在java中使用以下模式獲得相同的結果。
Pattern alarmPattern = Pattern.compile(".*?\\.Alarm\\(([^\\(]*?|\\([^\\)]*?\\))*\\)");
Pattern eventPattern = Pattern.compile(".*?\\.Event\\(([^\\(]*?|\\([^\\)]*?\\))*\\)");
但我沒有得到正確的輸出。
請給我提供一些指針,以實現正確的輸出。正則表達式應該只考慮最後一個括號,這裏左右括號對的數量並不是固定的。它可以增加或減少。因此,邏輯應該適用於任意數量的左右括號對。
你是否保存報警和事件對象文件?請參見java.util.Properties(用於可讀文本屬性)和java.io.Serializable。還有用於XML序列化的JAXB。 – ignis