我需要验证信中的希伯来文字 这封信的正文是:
שלום,
约翰·萨利文(John Salivan)。 מועדהייעוץנקבעלתאריך 23/02/2019בשעה20:45。
לביצועהייעוץישלכנסכנס
但是我的正则表达式与文本不匹配
public static void findBadLines(String fileName) {
Pattern regexp = Pattern.compile(".*שלום,.*תואם ייעוץ וידאו עם המטופל John Salivan. .*מועד הייעוץ נקבע לתאריך .* בשעה.*..*לביצוע הייעוץ יש להכנס .*");
Matcher matcher = regexp.matcher("");
Path path = Paths.get(fileName);
//another way of getting all the lines:
//Files.readAllLines(path, ENCODING);
try (
BufferedReader reader = Files.newBufferedReader(path, ENCODING);
LineNumberReader lineReader = new LineNumberReader(reader);
){
String line = null;
while ((line = lineReader.readLine()) != null) {
matcher.reset(line); //reset the input
if (!matcher.find()) {
String msg = "Line " + lineReader.getLineNumber() + " is bad: " + line;
throw new IllegalStateException(msg);
}
}
}
catch (IOException ex){
ex.printStackTrace();
}
}
final static Charset ENCODING = StandardCharsets.UTF_8;
}
答案 0 :(得分:0)
我说对了,您不会检查给定输入中是否有希伯来语文字吗?
如果这样,请使用该正则表达式.*[\u0590-\u05ff]+.*
[\u0590-\u05ff]+
匹配一个或多个希伯来字符,.*
在需要匹配其余输入之前和之后。
分别
Pattern regexp = Pattern.compile(".*[\u0590-\u05ff]+.*");
//...
matcher.reset(line); //reset the input
if (!matcher.matches()) {
String msg = "Line " + lineReader.getLineNumber() + " is bad: " + line;
throw new IllegalStateException(msg);
}