Java正则简单运用1

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;
        }


    }






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值