我正在尝试扫描文本文件,只使用正则表达式打印出包含字母的字符串。
当我使用正则表达式时,我当前的代码一直返回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 :(得分: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