无法使用Java和Regex从文件中打印文字

时间:2017-03-11 16:01:57

标签: java regex

我正在尝试扫描文本文件,只使用正则表达式打印出包含字母的字符串。

当我使用正则表达式时,我当前的代码一直返回false。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class DocumentReader {
    public static void main(String[] args) throws FileNotFoundException {

        File inputFile = new File("document.txt"); // document
        Scanner in = new Scanner(inputFile);            

        while (in.hasNext()){

            String input = in.next();
            input.matches("([^a-zA-Z])");
            System.out.println(input.matches("[^a-zA-Z]"));
            System.out.println(input);


            //if text matches regex, print text
            if (input.matches("[^a-zA-Z]")){
            System.out.println(input);
            }
        }

    }

}

1 个答案:

答案 0 :(得分:3)

问题:[^a-zA-Z]表示匹配单个非字母字符。

由于您希望匹配containing letters使用

  • [a-zA-Z]+ []
  • 中提供的一个或多个字母

代码:

    File inputFile = new File("document.txt"); // document
    Scanner in = new Scanner(inputFile);            

    while (in.hasNext()){

        String input = in.next();
        //input.matches("([^a-zA-Z])"); not required
        System.out.println(input.matches("[a-zA-Z]+")+"\n"+input);

        //if text matches regex, print text
        if (input.matches("[a-zA-Z]+")){
            System.out.println(input);
        }

演示



console.log(/^[a-zA-Z]+$/.test('abcd'));
console.log(/^[a-zA-Z]+$/.test('%s')); // ignore ^ $ , matches add it by default