使用正则表达式解析正文
正则表达式在线测试工具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 "";
}