我有一个字符串如下。
$Alarm:com.Alarm(a == 123 || (count == 12345 || (time matches "24" && pqr =="1")))
$Event:com.Event(b == 123 || (co == 12345 || (time matches "204" && pqr =="22")))
每当我遇到上述字符串时,我都需要生成以下字符串。我的意思是我需要"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\\(([^\\(]*?|\\([^\\)]*?\\))*\\)");
但我没有得到正确的输出。
请为我提供一些指示以实现正确的输出。正则表达式应该只考虑最后一个括号,这里左右括号对的数量不固定。它可能会增加或减少。所以逻辑应该适用于任意数量的左括号和右括号对。