正则表达式在java模式中的应用
我有一个字符串如下正则表达式在java模式中的应用,java,regex,Java,Regex,我有一个字符串如下 $Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24")) $Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24")) from Stream. 每当我遇到上面的字符串时,我需要生成下面的字符串。我的意思是我需要像下面那样附加字符串“fromstream” $Alarm:com.Alarm(a ==
$Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24"))
$Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24")) from Stream.
每当我遇到上面的字符串时,我需要生成下面的字符串。我的意思是我需要像下面那样附加字符串“fromstream”
$Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24"))
$Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24")) from Stream.
我目前正在使用以下模式在java中实现同样的功能
Pattern eventPattern = Pattern.compile(".*?\\.Alarm\\(.*?\\)");
但是我得到了以下输出
$Alarm:com.Alarm(a == 123 || (count == 12345 , time matches "24") from Stream )
请给我一些指向正确输出的指针。正则表达式应该只考虑最后一个括号。
你需要在模式中包含匹配的PARNS。如下所示:
Pattern eventPattern = Pattern.compile(".*?\\.Alarm\\(([^\\(]*?|\\([^\\)]*?\\))*\\)");
第一个打开参数之前及之后的事项:*?\\\.报警\(
任何内部参数之外的内容:[^\\(]*?
内部参数对:\\([^\\)]*?\\)
匹配任意数量的parens外部或parens对内的内容:([^\\\(]*?\\\\([^\\)]*?\\)*
这个网站是一个玩正则表达式的好地方,你可以看看什么是有效的。你能展示一些关于你如何使用你的
事件模式的代码吗?
?只有在事先知道括号嵌套的最大级别的情况下,它才会有效。正则表达式不是图灵完整的…好的一点-海报需要回答is是一个issueMy要求is与parantesis[“”“]的数量无关。该字符串只需在最后一次关闭parantesis[“”“]后追加。