我正在从 .txt 文件中读取行,并且需要检查每一行是否“有效”。
有效行以 -2 到 2 之间的数字开头(包括 -2 和 2),然后是一个空格,然后可能是文本。
- “-1 这是有效的。”
- “0也是这样”
- “-2 和这个”
- “2 和这个”
- “-1这不是。”
- “-23 也不是这个”
我想为此使用正则表达式,但无法使其正常工作。我对正则表达式很不熟悉。这是我的代码:
public static List<Sentence> readFile(String filename) {
List<Sentence> sentences = new LinkedList<>();
Pattern pattern = Pattern.compile("-[0-2] abc");
Matcher matcher;
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
while (br.ready()){
matcher = pattern.matcher(br.readLine());
if (matcher.matches()){
System.out.print("matches ");
}
}
} catch (IOException e){
e.printStackTrace();
}
return sentences;
}
这不起作用(毫不奇怪)。有人可以帮助我获得正确的正则表达式吗?
最佳答案
您可能正在寻找类似于以下内容的正则表达式:
^(0|-?[1-2]) .*
^
符号匹配行的开头,(0|...)
匹配 0
或下面的表达式, -?
匹配 0 或 1 次出现 -
,[1-2]
匹配 1 或 2 个, 匹配空格,
.*
匹配 0 个或多个除换行符之外的任何内容。
关于java - 使用正则表达式检查字符串的开头是否与模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51470810/