我是java和regex的新手,我想知道匹配的正则表达式是“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";
}
}
mainmethod这里
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
我正在检查统计信上的字母
答案 0 :(得分:0)
如果它只是关于A,OO和NC,那么你可以使用正则表达式:
?.*\\s*A|OO|NC\\s*.*$
答案 1 :(得分:0)
我解决了我的问题,这就是我所做的:
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));
}
}