嗨,我最近正在开发一个代码,我必须提取最后三组数字。所以我用模式来提取数据。但是我听不懂。任何人都可以帮助我理解它吗?
String str ="EGLA 0F 020";
String def = "ALT 1F 001 TO ALT 1F 029";
String arr[] = def.split("TO");
String str2 = arr[0];
System.out.println("str2:"+str2);
Pattern pt = Pattern.compile("[0-9][0-9][0-9]$");
Matcher m1 = pt.matcher(str);
Matcher m2 = pt.matcher(str2);
boolean flag = m1.find();
boolean flag2 = m2.find();
if(flag)
System.out.println("first match:::"+m1.group(0));
else
System.out.println("Not found");
if(flag2)
System.out.println("first match:::"+m2.group(0));
else
System.out.println("Not found");
上面的代码产生的输出如下:
str2:ALT 1F 001
first match:::020
Not found
请回复iam卡在这里吗?
最佳答案
这是因为拆分时会有尾随空格。
String str = "EGLA 0F 020";
String str2 = "ALT 1F 001 ";
// ^ trailing space
您可以通过多种方法对其进行修复。例如:
通过在
" TO "
上分割修剪结果
在正则表达式中允许尾随空格。
例如,此更改将起作用:
String arr[] = def.split(" TO ");
关于java - 为什么Matcher无法在Java运行时中获取或提供的字符串失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7794543/