Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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,我是java和正则表达式的新手,我想知道匹配的正则表达式是“a”还是“OO”或“NC”。我把它比作一个文本文件。我读了其他线程并尝试了它们,但我做不好。我也有一个问题,我的主要方法说,未报告的异常,请帮助 UserLogin.java public static String userLoginVerify(String actNum,String pass) throws FileNotFoundException { Scanner scan = null; AtmMenu

我是java和正则表达式的新手,我想知道匹配的正则表达式是“a”还是“OO”或“NC”。我把它比作一个文本文件。我读了其他线程并尝试了它们,但我做不好。我也有一个问题,我的主要方法说,未报告的异常,请帮助

UserLogin.java

public static String userLoginVerify(String actNum,String pass) throws FileNotFoundException
{
    Scanner scan = null;
    AtmMenu atm = new AtmMenu();
    try {   
            scan = new Scanner(new BufferedReader(new FileReader("atm\\atmstatus.flat")));
            while(scan.hasNext())
            {   
                String lines;
                lines = scan.nextLine();
                Pattern pattern = Pattern.compile("[A]||[OO]||[NC]");

                        Matcher matcher = pattern.matcher(lines);

                if(matcher.find()) {
                    System.out.println(matcher.group(1));    
                    }
            }

    }catch(FileNotFoundException filenotfound)
        {
            System.out.println("File \"atmstatus.flat\" can't be found!");
        }       
    finally
    {   
        if(scan != null)
        scan.close();
        return "me";
    }
}
这里的主要方法

public static void main(String[] login) 
{   
    passLoginInfo(login[0],login[1]);   

}

public static void passLoginInfo(String accountNumber, String password)
{
    UserLogin userLogin = new UserLogin();  
    userLogin.userLoginVerify(accountNumber, password);

}   
这是我要查的文件

currentamount               | stat
P500,000,000,000,000,000.00 | A

我正在检查stat上的字母

如果只是关于A、OO和NC,那么您可以将regex设置为:

?.*\\s*A|OO|NC\\s*.*$

我解决了我的问题,以下是我所做的:

scan = new Scanner(new BufferedReader(new FileReader("atm\\atmstatus.flat")));
            while(scan.hasNext())
            {   
                String lines;
                lines = scan.nextLine();
                System.out.println(lines[2]);
                Pattern pattern = Pattern.compile("[A]|[OO]|[NC]");             
                        Matcher matcher = pattern.matcher(lines);                                               
                if(matcher.find()) {
                    System.out.println(matcher.group(0));    
                    }
            }

现在还不清楚您想用正则表达式做什么,但就异常问题而言,您对检查过的异常有多了解?您应该阅读您是否只想检查字符串是否为“a”、“OO”或“NC”?是的,我想检查它是否与任何一个字符串匹配。我将发布我正在检查的文件,实际上,这不会按预期工作。模式
“[A]|[OO]|[NC]”
将匹配字符串
“A”
“O”
“N”
“C”
,但不匹配
“OO”
“NC”
。这是因为
[]
描述了一类字符,因此它将是“我的类中的一个字母”。您实际需要的是
“(a)|(OO)|(NC)”