java中的正则表达式[0-9]问题

java中的正则表达式[0-9]问题,java,regex,string,file-io,Java,Regex,String,File Io,我有一个文本文件,如下所示: 我需要阅读从整数值开始的内容,我在下面的代码中使用了正则表达式 public static void main(String[] args) throws FileNotFoundException { FileInputStream file= new FileInputStream("C:\\Users\\ap\\Downloads\\sample1.txt"); Scanner scanner = new Scanner(file);

我有一个文本文件,如下所示:



我需要阅读从整数值开始的内容,我在下面的代码中使用了正则表达式

public static void main(String[] args) throws FileNotFoundException {
   FileInputStream file= new FileInputStream("C:\\Users\\ap\\Downloads\\sample1.txt"); 
   Scanner scanner = new Scanner(file);
          while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            if (line.startsWith("[0-9]")) {
                System.out.println("Line: "+line);
            }
           }
}
上面的代码无法检测以整数开头的行。但是,如果将单个整数值传递给
startsWith()
函数,则可以正常工作。 请指出我的错误所在。

方法不接受正则表达式。它需要一个字符串文本

要检查第一个字符是否为数字,可以使用方法获取索引0处的字符。然后使用以下方法测试字符是否为数字:

对于regex,您可以使用“matches”方法,如下所示:

line.matches("^[0-9].*")

@SotiriosDelimanolis你能给我推荐另一种解决方案吗?使用解释正则表达式的方法。看看
模式
匹配器
类。或者对于像这样的简单情况,检查Rohit的答案。它只匹配一个字符串。您需要
^[0-9].
否。没有这样的要求。请把问题再读一遍。“我需要阅读以整数值开头的内容”是的,你的正则表达式不匹配所有以整数值开头的字符串,它匹配的字符串完全由一位整数值组成。是的,你是对的,我想他只是想确保行以int值开头(为此,我们只需要得到第一个数字)。如果他想要得到实际的数字,那么他应该按照你的建议去做。我会编辑,谢谢。不,还是错了。到目前为止,你的正则表达式都不匹配“以整数开头的行”。它们都只是匹配“一个整数行”,因此将为文件中的每一行返回
false
。之后需要
*
来匹配该行的其余部分。
if (Character.isDigit(line.charAt(0)) {
    System.out.println(line);
}
line.matches("^[0-9].*")