Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式在java模式中的应用_Java_Regex - Fatal编程技术网

正则表达式在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[“”“]后追加。