如何在Java程序中使用RegExp?
我有以下字符串示例:如何在Java程序中使用RegExp?,java,regex,Java,Regex,我有以下字符串示例: 00001 1 12 123 00002 3 7 321 00003 99 23 332 00004 192 50 912 在一个单独的文本文件中数字由制表符而不是空格分隔。 我试图读取文件并打印每一行,如果它与给定的RegExp匹配,但是我找不到适合这些行的RegExp private static void readFile() { String fileName = "processes.lst"; FileReader file = n
00001 1 12 123
00002 3 7 321
00003 99 23 332
00004 192 50 912
在一个单独的文本文件中数字由制表符而不是空格分隔。
我试图读取文件并打印每一行,如果它与给定的RegExp匹配,但是我找不到适合这些行的RegExp
private static void readFile() {
String fileName = "processes.lst";
FileReader file = null;
String result = "";
try {
file = new FileReader(fileName);
BufferedReader reader = new BufferedReader(file);
String line = null;
String regEx = "[0-9]\t[0-9]\t[0-9]\t[0-9]";
while((line = reader.readLine()) != null) {
if(line.matches(regEx)) {
result += "\n" + line;
}
}
} catch(Exception e) {
System.out.println(e.getMessage());
} finally {
if(file != null)
try {
file.close();
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
System.out.println(result);
}
我最终没有打印任何字符串 问题在于
[0-9]
只匹配一个数字,但您的输入通常在制表符之间有多个数字。您需要使用[0-9]+
来匹配每个数字。(+
表示前面的一个或多个重复…)
但更简单的解决方案是使用
String.split(…)
。。。阅读javadoc。问题在于[0-9]
只匹配一个数字,但您的输入通常在制表符之间有多个数字。您需要使用[0-9]+
来匹配每个数字。(+
表示前面的一个或多个重复…)
但更简单的解决方案是使用String.split(…)
。。。阅读javadoc。使用这个
String regEx=“[0-9]+\s[0-9]+\s[0-9]+\s[0-9]+”代码>
- 至少1个字符及以上
- 至少0个字符及以上
{2,3}对于最少2个字符和最多3个字符,请使用此
String regEx=“[0-9]+\s[0-9]+\s[0-9]+\s[0-9]+”代码>
- 至少1个字符及以上
- 至少0个字符及以上
{2,3}对于最少2个字符和最多3个字符的问题,欢迎来到程序员SE,这是白板问题问答网站,而不是实际的编程问题。请参阅,了解本网站的概述。您好,欢迎来到程序员SE,这是一个白板问题问答网站,而不是实际的编程问题。有关此网站的概述,请参阅。如果某些数字前面有(-)号,该如何包含这些数字?然后需要更改正则表达式以匹配前面的可选减号。(Duh!)。但我不会告诉你怎么做。或者阅读关于正则表达式的教程。。。或者按照我答案最后一句的建议去做!提示:这不是一个让其他人为你编程的地方。如果一些数字前面有(-)号,怎么能包含这些数字?然后你需要更改正则表达式以匹配前面可选的减号。(Duh!)。但我不会告诉你怎么做。或者阅读关于正则表达式的教程。。。或者按照我答案最后一句的建议去做!提示:所以这不是一个让别人为你编程的地方。