2017-03-11 35 views
1

我想掃描一個文本文件,只打印出包含字母的字符串,使用正則表達式。無法使用Java和正則表達式打印文件

當我使用正則表達式時,我當前的代碼一直返回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); 
      } 
     } 

    } 

} 
+0

你是指'[a-zA-Z] +' –

回答

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