Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式从字符串中提取文本_Java_Regex - Fatal编程技术网

Java 使用正则表达式从字符串中提取文本

Java 使用正则表达式从字符串中提取文本,java,regex,Java,Regex,我想从以下字符串中提取acquireTest括号内的值: format.getControl(val.acquireTest(xyzTest)); 以上内容应返回:xyzTest 该值始终位于单词acquireTest之后,并且始终位于括号中 更多示例: key.setUp(value.acquireTest(abcTest)); 上面的例子应该返回:abcTest 上面的示例应该返回:getValue 我尝试了以下正则表达式: \.acquireTest\((.*?)\) 然而,它并没有

我想从以下字符串中提取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));
    }