文章内容关键字或短语替换

分析的源文件内容:
  <fileNode access="" fileUuid="ac1eed02-eae9-11e7-9fd1-fa163e6dec89" metadata="" modifyTime="1513306994" name="All.DEG_final.clustered.data_subcluster_9.data" pid="abab9262-eae9-11e7-9fd1-fa163e6dec89" relativePath="Web_Report/BMK_5_DEG_Analysis/BMK_1_All_DEG/DEG_Cluster/BMK_2_Cluster_GO_enrichment/All.DEG_final.clustered.data_subcluster_9.data" tag="" type="folder"/>
<fileNode access="" dataUuid="ad041fb2-eae9-11e7-9fd1-fa163e6dec89" fileType="txt" fileUuid="ad041b52-eae9-11e7-9fd1-fa163e6dec89" metadata="[]" modifyTime="1513307016" name="jquery.ui.datepicker-uk.min.js" pid="acf9b73e-eae9-11e7-9fd1-fa163e6dec89" relativePath="Web_Report/BMK_5_DEG_Analysis/BMK_3_WTa_WTb_WTc_vs_M5a_M5b_M5c/BMK_2_DEG_Cluster/BMK_1_Heatmap_HTML/js/plugins/jquery-ui/i18n/jquery.ui.datepicker-uk.min.js" size="1039" tag="" type="file"/>

利用正则表达式处理:
 
  
String p1 = "^(<fileNode access=\"\" )(dataUuid=\")([a-z0-9-]{0,36})(.*)(fileUuid=\")([a-z0-9-]{0,36})(.*)(pid=\")([a-z0-9-]{0,36})(.*)(type=\"file\"/>)$";
        String p2 = "^(<fileNode access=\"\" )(fileUuid=\")([a-z0-9-]{0,36})(.*)(type=\"folder\"/>)$";
        String p3 = "^(<fileNode access=\"\" )(.*)(pid=\")([a-z0-9-]{0,36})";
        Pattern filePatter = Pattern.compile(p1);
        Pattern folderPatter = Pattern.compile(p2);
        Pattern pidPatter = Pattern.compile(p3);
try {
            List<String> list = Files.readAllLines(Paths.get("/home/bmk/testreport/report-files.xml"));
            if (list.size() > 0) {
                StringBuilder xmlString = new StringBuilder();
                Map<String, String> uuidMap = new HashMap<>();
                List<String> newContent = new ArrayList<>();
                list.stream().forEach(content -> {
                    Matcher fileMatcher = filePatter.matcher(content);
                    if (fileMatcher.lookingAt()) {
                        String dataUuid = fileMatcher.group(3);
                        String fileUuid = fileMatcher.group(6);
                        String newUuid = UUID.randomUUID().toString();
                        uuidMap.put(fileUuid, newUuid);
                        content = content.replace(dataUuid, UUID.randomUUID().toString());
                        content = content.replace(fileUuid, newUuid);
                        newContent.add(content);
                    }
                    Matcher folderMatcher = folderPatter.matcher(content);
                    if (folderMatcher.lookingAt()) {
                        String fileUuid = folderMatcher.group(3);
                        String newUuid = UUID.randomUUID().toString();
                        content = content.replace(fileUuid, newUuid);
                        uuidMap.put(fileUuid, newUuid);
                        newContent.add(content);
                    } else {
                        newContent.add(content);
                    }
                });
                newContent.stream().forEach(content -> {
                    Matcher pidMatcher = pidPatter.matcher(content);
                    if (pidMatcher.lookingAt()) {
                        String pid = pidMatcher.group(4);
                        if (uuidMap.containsKey(pid)) {
                            content = content.replace(pid, uuidMap.get(pid));
                        }
                    }
                    xmlString.append(content + "\r\n");
                });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

猜你喜欢

转载自wangxiangyang.iteye.com/blog/2406134
今日推荐