我想从以下字符串中提取 acquireTest 括号内的值:
format.getControl(val.acquireTest(xyzTest));
上面应该返回: xyzTest
值始终位于 acquireTest 之后,并且始终位于括号中。
更多例子:
key.setUp(value.acquireTest(abcTest));
以上示例应返回: abcTest
app.getMax((Integer.parseInt(va.acquireTest(getValue))));
以上示例应返回: getValue
我尝试过以下正则表达式:
\.acquireTest\((.*?)\)
然而,它并没有给我我想要的确切价值。
任何帮助都深深体会到它!
答案 0 :(得分:1)
你可以使用
final String regex = "acquireTest\\((\\w*)";
final String string = "format.getControl(val.acquireTest(xyzTest));\n"
+ "key.setUp(value.acquireTest(abcTest));\n"
+ "app.getMax((Integer.parseInt(va.acquireTest(getValue))));";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(1));
}
上的演示
答案 1 :(得分:1)
如果我理解得很好,你想提取
(val.acquireTest(xyzTest)) from
format.getControl(val.acquireTest(xyzTest));
如果这是真的,你应该做
\(.*\.acquireTest\(.*\)\)
告诉我你得到了什么以及它对你来说是否合适。
干杯 托马斯
答案 2 :(得分:1)
您可以尝试以下
List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("acquireTest\\((.*?)\\)");
Matcher regexMatcher = regex.matcher("format.getControl(val.acquireTest(xyzTest));\\n");
while (regexMatcher.find()) {
matchList.add(regexMatcher.group(1));
}
for(String str:matchList) {
System.out.println(str);
}
答案 3 :(得分:1)
Pattern pattern = Pattern.compile("acquireTest\\((\\w+)\\)");
Matcher matcher = pattern.matcher("app.getMax((Integer.parseInt(va.acquireTest(getValue))));");
if (matcher.find()){
System.out.println(matcher.group(1));
}
这适合你吗?