【发布时间】:2018-04-04 04:57:46
【问题描述】:
我正在使用正则表达式将特定模式替换为更简单的模式。
我需要从两个括号之间取出所有字符,空格,并在捕获组中使用它们。但是,括号之间的字符也可能是括号。
以下是我尝试匹配的两个示例:
.message("vel pharetra est urna eget justo. Nunc in dignissim velit. {} "
+ error.getMessage().getProperty())
.build().log();
.message("Key : " + oldEntry.getKey() + " and Value: " + oldEntry.getValue())
.build()
.log();
我当前的正则表达式:\.message\(([\S\s]+?)\)[\S\s]*?((\.log\(\))|(\.build\(\)))\;
当消息中没有括号时,它匹配简单的模式。但是当有括号时,它会在第一个右括号处停止捕获组。我确定这是因为我使用的是+?,但我不确定如何指定搜索应该继续。
我用几个例子创建了这个正则表达式。 http://regexr.com/3h15u
【问题讨论】:
-
请标记一种语言。
-
在你的两个例子中,你想匹配什么?
message的参数,或者从.message到log()的所有内容? -
我只是表面上看,但根据 MDN,使用 ?在 *、+、? 或 {} 之后使捕获组不贪婪...
-
我在技术上使用 Intellij 中的正则表达式替换功能,但找不到他们使用的实现的参考。
-
@tobias_k
message的参数