正则表达式在Java中未按预期工作

正则表达式在Java中未按预期工作,java,regex,Java,Regex,我使用的正则表达式在RegexBuddy中工作,但在Java中不工作 这是我的正则表达式:(?试试这个正则表达式: (?<=files\\s)(.*) 我的:(?奇怪,我正在运行这个,如果我把括号放在文件周围与否,我看不出有什么区别。后面的查找中的括号没有什么区别 import java.util.regex.Matcher; import java.util.regex.Pattern; public class regex { public static void main

我使用的正则表达式在RegexBuddy中工作,但在Java中不工作

这是我的正则表达式:
(?试试这个正则表达式:

(?<=files\\s)(.*)

我的:
(?奇怪,我正在运行这个,如果我把括号放在文件周围与否,我看不出有什么区别。后面的查找中的括号没有什么区别

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class regex
{
    public static void main(String[] args)
    {

        String s = "-files /root1/file1.dat;/root/file2.txt";
        Pattern p = Pattern.compile("(?<=-(files)\\s)(.*)");
        Matcher m = p.matcher(s);
        System.out.println(m.find());
        System.out.println(m.group());
    }
}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类正则表达式
{
公共静态void main(字符串[]args)
{
字符串s=“-files/root1/file1.dat;/root/file2.txt”;

Pattern p=Pattern.compile((?谢谢。在这种情况下,有关于括号的规则吗?这真的帮了我很大的忙。你是对的,我不知道并使用了group1。当你说“它正在返回…”时,你的确切意思是什么?你原来的正则表达式应该有
matcher.group()
matcher.group(2)
包含
/root1/..
匹配器。组(1)
将包含字符串
文件
,因为后面的查找中捕获了括号。@IanRoberts我使用组(1)犯了错误。在得到解释后,我已经修复了代码,现在应该是这样。问题是我使用了组(1)我知道正则表达式并不完美,但我正在做一个并不重要的项目。我只需要在正则表达式中输入代码,以便在最后一个空格后停止返回
group 0:/root1/file1.dat;/root/file2.txt
group 1:/root1/file1.dat;/root/file2.txt
(?<=files\\s).*
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class regex
{
    public static void main(String[] args)
    {

        String s = "-files /root1/file1.dat;/root/file2.txt";
        Pattern p = Pattern.compile("(?<=-(files)\\s)(.*)");
        Matcher m = p.matcher(s);
        System.out.println(m.find());
        System.out.println(m.group());
    }
}