java 正则的简单运用实例:
实现如下功能:
- 从 第1个文件读取txt内容,从第2个文件读取正则表达式,统计正则表达式在文件1中匹配到的总数
- 打印出具体匹配的内容
例如 : 1.txt , CRC=1.txt 文件内容如下
两个参数:打印匹配的总数
第一个参数为匹配目标文件名
第二个参数为正则表达式存储的文件名
三个参数:打印匹配的总数+打印匹配的具体项
第一个参数为匹配目标文件名,
第二个参数为正则表达式存储的文件名
第三个参数为正则表达式的分组ID(正则整体为group 0,从左到右由()内分别为1,2,3…)
代码
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JavaRegex {
/***
*
* @param args args[0]
* args[2]: txt file name
* args[2] regex file name
* args[3] print mat
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//检查参数是否足够,不够提示用户
if(args.length<2)
{
System.out.println("----Usage:" +
"java -jar TextTools.jar target_text_file regular_expression_file groups_ID " );
System.out.println(" -eg: java -jar TextTools.jar 1.txt CRC=1.txt" );
System.out.println(" -eg: java -jar TextTools.jar 1.txt CRC=1.txt 1" );
System.exit(0);
}
//读取文件内容,txt 为需要查找的文件内容字符, regx为正则字符
StringBuffer txt =null;
StringBuffer regx=null;
try {
txt = readFileToStringBuffer(args[0].toString().trim());
regx= readFileToStringBuffer(args[1].toString().trim());
}catch (Exception e){System.out.println("file read error"); }
//正则匹配
Pattern p=Pattern.compile(regx.toString().trim());
Matcher m=p.matcher(txt.toString());
int counter=0;
//两个个参数,只打印总数
if(args.length==2 )
{
while (m.find())
{
counter++;
}
System.out.println("##################################################################");
String re = args[1].replaceAll(".txt", "");
System.out.println(re + " Total Number is : " + counter + " PCS ");
}
//三个参数,打印group 匹配到的内容+打印总数
else if(args.length==3 )
{
counter=0;
int group=0;
System.out.println();
System.out.println();
System.out.println("##################################################################");
m = p.matcher(txt.toString());
group=Integer.parseInt(args[2].trim());
while (m.find())
{
System.out.println("Group: "+group+ " Matched Result: "+m.group(group)) ;
counter++;
}
System.out.println("Group: "+group+ " Total Number is "+ counter + " PCS ") ;
}
}
//读写文件
public static StringBuffer readFileToStringBuffer(String filename) throws IOException {
FileReader fileReader = new FileReader(filename);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String temp;
StringBuffer bf = new StringBuffer();
while ((temp = bufferedReader.readLine()) != null) {
bf.append(temp+"\r\n");
}
return bf;
}
}