使用正则表达式解析正文

使用正则表达式解析正文

正则表达式在线测试工具https://tool.ip138.com/regex/

正则表达式 - 元字符

字符描述
\将下一个字符标记为一个特殊字符
*表示前面的字符可以出现若干次(a*,a可以出现0次或者若干次)
.表示匹配一个非换行字符(不是\n或者\r都能匹配到)
.*表示匹配非换行字符出现若干次
?当该字符紧跟在任何一个其他限制符 后面时,匹配模式是非贪婪的

解析正文

  • 有的HTML文档里面包含了script标签,使用正则表达式去掉使之成为文本
  • 首先将正文内容读到String里面,使用正则替换
  public String parseContentByRegex(File f){

        //1.先把整个文件都读到 String 里面
        String content  = readFile(f);
        //2.替换掉 script 标签
        content = content.replaceAll("<script.*?>(.*?)</script>"," ");
        //3. 替换掉 普通的 html 标签
        content = content.replaceAll("<.*?>"," ");
        //4.合并多个空格
        content = content.replaceAll("\\s+"," ");
        return content;
    }
  • 使用BufferedReader类读取文件
private  String readFile(File f){
        try(BufferedReader bufferedReader = new BufferedReader(new FileReader(f))) {
            StringBuilder content = new StringBuilder();
            while(true){
                int ret = bufferedReader.read();
                if(ret == -1){
                    break;
                }
                char c = (char)ret;
                if(c =='\n' || c == '\r' ){
                    c = ' ';//替换护换行符
                }
                content.append(c);
            }
            return content.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值