繁体   English   中英

使用Pattern Java中的正则表达式

[英]Regular Expressions in Using Pattern java

我有一个字符串如下。

$Alarm:com.Alarm(a  ==  123 || (count  ==  12345 , time  matches  "24"))

每当遇到上面的字符串时,我都需要生成以下字符串。我的意思是我需要在字符串后面附加“来自Stream”。

$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 )

请向我提供一些指针以实现正确的输出。正则表达式应仅考虑最后一个括号。

您需要在模式中包含匹配的括号。 类似于以下内容:

Pattern eventPattern = Pattern.compile(".*?\\.Alarm\\(([^\\(]*?|\\([^\\)]*?\\))*\\)");

直到并包括第一个打开的括号的内容: .*?\\\\.Alarm\\\\(

在内部任何内部括号之外的内容: [^\\\\(]*?

内部对对: \\\\([^\\\\)]*?\\\\)

匹配在parens外部或parens对内的任意数量的东西: ([^\\\\(]*?|\\\\([^\\\\)]*?\\\\))*

这个RegexPlanet网站是一个与正则表达式一起玩的好地方,以查看将如何工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM