使用java的正则表达式

时间:2012-10-31 09:39:43

标签: java regex

我有一个字符串如下。

    $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"作为子字符串{{1如下所示。

$Event:com.Event(...)

我目前正在使用以下模式在java中实现相同的目标。

    $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

但我没有得到正确的输出。

请给我一些指示来实现正确的输出。正则表达式应该只考虑最后一个括号,这里左右括号对的数量不固定。它可以增加或减少。所以逻辑应该适用于任何左右括号对的数量。

2 个答案:

答案 0 :(得分:2)

为什么在这里需要RegEx。我认为即使这种类型的代码也适合你:

if (str.startsWith("$Alarm:com.Alarm"))
    str = str + " from AlarmStream";
else if (str.startsWith("$Event:com.Event"))
    str = str + " from EventStream";

答案 1 :(得分:0)

与以前的解决方案类似:

str += str.startsWith("$Alarm:com.Alarm")?" from AlarmStream":str.startsWith("$Event:com.Event")?" from EventStream":"";