pandoc word转markdown之后正则修改

问题

用pandoc工具将doc文件转换为markdown文件后,有关图片的处理会变成:

(./url路径){width="3.46875in" height="1.0729166666666667in"}

但是我要展示到前端的,前端组件用的v-md-preview,结果展示的时候,后面的宽高没有识别,也展示出来了,那么就得把它去掉了,去掉之后也没有感觉有什么影响。

方法

后端处理:

思路

java正则匹配以{开始}结束的子串,并替换为""

正则: (({width)(.*?)(})) 匹配以{width开头 并且以}结尾的子串

java 复制代码
 public static void main(String[] args) {
        //字符串
        String line = "abcd{width=jfdksljfsdfjdslk}11111 ";
        //正则表达式
        String pattern = "(\\{width)(.*?)(\\})"; //Java正则表达式以括号分组,第一个括号表示以"{width"开头,第三个括号表示以}结尾,中间括号为目标值
        String replaceStr = "";
        Pattern r = Pattern.compile(pattern);
        Matcher m = r.matcher(line);
        while (m.find()) {
           m.group();
           replaceStr = m.replaceAll(""); //将匹配到的内容清空
        }

最后输出:abcd11111

解决!

参考来自:正则匹配

后续

结果width与height不知道怎么的,总是换行的,然后正则就匹配不到,也没找到跨行可以捕获的正则,于是就改成了一半一半的去匹配替换,另外又补充了一些其他可能存在的转换格式错误的地方,就都加进来了

java 复制代码
package Tool;

import cn.hutool.core.io.FileUtil;

import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 将pandoc转换后md文件转换为为合规的文件
 */
public class FileTrans {


    /**
     * 将文档内的字符串进行替换
     * 原字符串:strOld
     * 替换后的自古穿:strNew
     *
     * @param mdStr
     * @return
     */
    public static String turnStr(String mdStr, String strOld, String strNew ) {
        String turnStr = mdStr.replaceAll(strOld, strNew);
        return turnStr;
    }


    /**
     * 删除生成文件中无用的字符串 width
     *
     * @param
     */
    public static String delUnUsefulStr(String text) {
        String regex = "((\\{width)(.+)(\"))";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        String replaceStr = "";

        if (matcher.find()) {
            // 字符串匹配成功,删除该处内容
            matcher.group();
            replaceStr = matcher.replaceAll("");
        }
        return  replaceStr;
    }


    /**
     * 删除生成文件中无用的字符串height
     *
     * @param
     */
    public static String delUnUsefulStr1(String text) {
        String regex = "((height)(.*?)(\\}))";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        String replaceStr = "";

        if (matcher.find()) {
            // 字符串匹配成功,删除该处内容
            matcher.group();
            replaceStr = matcher.replaceAll("");

        }
        return  replaceStr;
    }

    public static void main(String[] args) {

        String mdStr = FileUtil.readString(new File("D:\\pandoc\\help1.md"), "utf-8");
        //删除width
        String s1 = delUnUsefulStr(mdStr);
        //删除height
        String s2 = delUnUsefulStr1(s1);
        //替换路径 正式存放路径都为中文三级菜单 /pss/template/三级菜单/images/1.png
        String s3 = turnStr(s2, "/text/", "/text/1111/");
        //替换标题多余的(**.** -> .)
        String s4 = turnStr(s3, "\\*\\*.\\*\\*", ".");
        //替换4个*(**** -> "")
        String finalStr = turnStr(s4, "\\*\\*\\*\\*", "");

        //将替换好的String 重新生成到文件
        FileUtil.writeBytes(finalStr.getBytes(StandardCharsets.UTF_8),"D:\\pandoc\\help1T.md");
    }
}

表格处理

pandoc word转markdown 表格是肯定样式会丢的,因此,这步骤也需要手动去处理,找到了一个在线替换的网站,可以直接从word中复制出来,转完后再替换

markdown表格转换

相关推荐
零千叶16 分钟前
【面试】AI大模型应用原理面试题
java·设计模式·面试
坐吃山猪5 小时前
SpringBoot01-配置文件
java·开发语言
我叫汪枫5 小时前
《Java餐厅的待客之道:BIO, NIO, AIO三种服务模式的进化》
java·开发语言·nio
yaoxtao5 小时前
java.nio.file.InvalidPathException异常
java·linux·ubuntu
Swift社区7 小时前
从 JDK 1.8 切换到 JDK 21 时遇到 NoProviderFoundException 该如何解决?
java·开发语言
DKPT8 小时前
JVM中如何调优新生代和老生代?
java·jvm·笔记·学习·spring
phltxy8 小时前
JVM——Java虚拟机学习
java·jvm·学习
seabirdssss9 小时前
使用Spring Boot DevTools快速重启功能
java·spring boot·后端
喂完待续9 小时前
【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架
java·spring·spring cloud·云原生·架构·big data·序列晋升