Java 使用正则表达式从字符串中提取文本
我想从以下字符串中提取acquireTest括号内的值:Java 使用正则表达式从字符串中提取文本,java,regex,Java,Regex,我想从以下字符串中提取acquireTest括号内的值: format.getControl(val.acquireTest(xyzTest)); 以上内容应返回:xyzTest 该值始终位于单词acquireTest之后,并且始终位于括号中 更多示例: key.setUp(value.acquireTest(abcTest)); 上面的例子应该返回:abcTest 上面的示例应该返回:getValue 我尝试了以下正则表达式: \.acquireTest\((.*?)\) 然而,它并没有
format.getControl(val.acquireTest(xyzTest));
以上内容应返回:xyzTest
该值始终位于单词acquireTest之后,并且始终位于括号中
更多示例:
key.setUp(value.acquireTest(abcTest));
上面的例子应该返回:abcTest
上面的示例应该返回:getValue
我尝试了以下正则表达式:
\.acquireTest\((.*?)\)
然而,它并没有给出我想要的确切值
任何帮助都是非常感激的 您可以使用
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));
}
查看演示,如果我理解得很好,您想提取
(val.acquireTest(xyzTest)) from
format.getControl(val.acquireTest(xyzTest));
如果这是真的,你应该这么做
\(.*\.acquireTest\(.*\)\)
告诉我你得到了什么,是否适合你
干杯
托马斯你可以试试下面的方法
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);
}
List matchList=new ArrayList();
Pattern regex=Pattern.compile(“acquireTest\\(.*?\\)”;
Matcher regexMatcher=regex.Matcher(“format.getControl(val.acquiredtest(xyzTest));\\n”);
while(regexMatcher.find()){
添加(regexMatcher.group(1));
}
用于(字符串str:matchList){
系统输出打印项次(str);
}
这对您有用吗?如果不是准确的值,它会返回什么?您查看过组1吗?“但是,它没有给出我要查找的确切值。”此正则表达式看起来很好(假设括号之间没有换行符,因为默认情况下,
无法匹配它-但可以更改它)。你能告诉我们你是如何使用它的吗?谢谢你的回复!了解有关regex的新信息:)
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);
}
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));
}