java我的模式有什么问题?
public class FileParser {
private String filename = "mydata.txt";
private Pattern pattern = Pattern.compile("\\D\\D\\d+");
private Scanner reader;
public FileParser() throws FileNotFoundException{
reader = new Scanner(new File(filename));
}
public boolean hasMoreData(){
return reader.hasNext(pattern);
}
public String[] getNextData(){
return pattern.split(reader.next(pattern));
}
public void close(){
reader.close();
}
}
这是我的代码。我试图找出一个由两个字母和一个数字组成的图案。为什么我从getNextData()函数中没有得到任何东西/空数组
# 1 楼答案
Scanner.hasNext(pattern)
搜索从分隔符之间开始的模式。在您的例子中,分隔符是|
。但扫描器的默认分隔符是空白。您必须手动将分隔符更改为|
或完全忽略分隔符。下面是一个使用Scanner.findWithinHorizon
的示例,它不关心分隔符:# 2 楼答案
在表达式中:
reader.next(pattern)
返回该模式的下一次出现,例如“AB123”但是
pattern.split
然后在模式周围拆分该字符串,返回其两侧的文本。当然,两边都没有文本,因为分隔符“AB123”是整个字符串是否只返回字符串“AB123”?在这种情况下,您可能只需返回
reader.next
的结果# 3 楼答案
我觉得你的正则表达式有缺陷。我相信你想要