java - 使用 Pattern java 中的正则表达式

标签 java regex

我有一个如下的字符串。

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

每当我遇到上面的字符串时,我需要生成以下字符串。我的意思是我需要附加字符串“from 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\\(

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

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

匹配括号外或括号对内的任意数量的内容:([^\\(]*?|\\([^\\)]*?\\))*

这个RegexPlanet网站是一个使用正则表达式来看看什么会起作用的好地方。

关于java - 使用 Pattern java 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10104862/

相关文章:

java - 如何在Java中将私钥写入受密码保护的DER格式?

java - java如何定位JAR文件?

java - 关于 JPEG MCU 的详细信息

.net - 正则表达式挑选艺术家姓名和歌曲标题,存在惰性匹配问题

javascript - 需要帮助理解 JavaScript 代码

javascript - 如何修改正则表达式以解析来自 YouTube 网址的参数

java - Maven 可执行 jar 打包 vs Maven exec with Jackson 不工作

java - 正则表达式用于过滤电子邮件、数字和重复输入

regex - 具有正则表达式循环值的 shell 脚本输入字符串

java - 未找到 Android SDK 中的某些 .java 源代码