我正在使用正则表达式用更简单的模式替换特定模式.
我需要从两个括号中取出所有字符,空格,并在捕获组中使用它们.但是,括号之间的字符也可能是括号.
以下是我想要匹配的两个例子:
.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();
Run Code Online (Sandbox Code Playgroud)
我现在的正则表达式: \.message\(([\S\s]+?)\)[\S\s]*?((\.log\(\))|(\.build\(\)))\;
当消息中没有括号时,它匹配简单模式.但是当有括号时,它会在第一个右括号处停止捕获组.我确定这是因为我正在使用,+?但我不确定如何指定搜索应该继续.
我用几个例子创建了这个regexr.http://regexr.com/3h15u
你可以使用这个正则表达式:
\.message\((?s)(.+?)\)\s*(?:\.(?:log|build)\(\)\s*)+\s*;
Run Code Online (Sandbox Code Playgroud)
在捕获的组#1中捕获(和)捕获文本
在Java中使用:
final String regex = "\\.message\\((?s)(.+?)\\)\\s*(?:\\.(?:log|build)\\(\\)\\s*)+\\s*;";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |