//package cn.cslg.pas.service.patentRightSplit; // //import cn.cslg.pas.common.model.params.PatentRightParams; //import cn.cslg.pas.domain.PatentRight; //import org.springframework.stereotype.Service; // //import java.util.ArrayList; //import java.util.List; //import java.util.regex.Matcher; //import java.util.regex.Pattern; // ///** // * 拆分权要类(日本专利JP) // * // * @author chenyu // * @date 2023/8/30 // */ //@Service //public class PatentRightSplitJPService implements PatentRightSplitService { // // @Override // public List formatPatentRight(PatentRightParams params) { // try { // //创建一个权要集合,用于返回结果 // ArrayList patentRights = new ArrayList<>(); // //原文 // String content = params.getContent(); // // //将原文从"1"截取到末尾(为了去除首行"声称的是:\n") //// if (!content.equals("") && content.contains("声称的是") && content.contains("1")) { //// content = content.substring(content.indexOf("1")); //// } // // //第1步:拆分权要原文 ↓ // //将原文和译文的所有换行符 "\r\n"和"\n" 替换成特殊符号 "##@@&&",这样可以使得全文连在一起,其次再根据特殊符号##@@&&拆分权要 // content = content.replace("\r\n", "##@@&&").replace("\n", "##@@&&"); // // //若原文没有换行符,则全文按照句号"。"拆分 // if (!content.contains("##@@&&")) { // content = content.replace("。", "。\n"); // } else { // //定义正则表达式 // String regex = "##@@&&[0-9]+"; // Matcher matcher = Pattern.compile(regex).matcher(content); // while (matcher.find()) { // String macherGroup = matcher.group(); // content = content.replaceFirst(macherGroup, "\n" + macherGroup.substring(macherGroup.indexOf("##@@&&") + 6)); // } // //去除所有特殊符号"##@@&&" // content = content.replace("##@@&&", ""); // } // //最后按照换行符"\n"将权要拆成多个 // String[] strs = content.split("\n"); // // // //第2步:理出每个权要的类型(type为 1主权要还是 0附属权要)、理出权要之间的层级关系(每个权要的父级权要序号parentSort) ↓ // String regex1 = "权利要求[0-9]+"; // String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+"; // for (int i = 0; i < strs.length; i++) { // //创建权要对象装载当前权要 // PatentRight patentRight = new PatentRight() // .setContent(strs[i]) // .setSort(i); // // //判断若该权要有逗号(即超过一句话)并且它第一句话中有"权利要求"4个字 或者 该权要没有逗号(即只有一句话),并且它有"权利要求"4个字,则该权要类型为附属权要 // if ((strs[i].contains(",") && strs[i].substring(0, strs[i].indexOf(",")).contains("权利要求")) || (!strs[i].contains(",") && strs[i].contains("权利要求"))) { // //则该权要类型为附属权要 // patentRight.setType(0); // // Matcher matcher1 = Pattern.compile(regex1).matcher(strs[i]); // Matcher matcher2 = Pattern.compile(regex2).matcher(strs[i]); // if (matcher2.find()) { //"权利要求2~4" // String parentNum = matcher2.group().substring(matcher2.group().indexOf("权利要求") + 4); //"2~4" // String[] parentNumStrs = new String[0]; // if (parentNum.contains("~")) { // parentNumStrs = parentNum.split("~"); //[2, 4] // } else if (parentNum.contains("-")) { // parentNumStrs = parentNum.split("-"); // } else if (parentNum.contains("至")) { // parentNumStrs = parentNum.split("至"); // } else if (parentNum.contains("或")) { // parentNumStrs = parentNum.split("或"); // } // // int[] parentSorts = new int[parentNumStrs.length]; //[1, 3] // for (int i1 = 0; i1 < parentSorts.length; i1++) { // parentSorts[i1] = Integer.parseInt(parentNumStrs[i1]) - 1; // } // // if (parentNum.contains("或")) { // StringBuilder builder = new StringBuilder(); // for (int parentSort : parentSorts) { // builder.append(parentSort).append(","); // } // patentRight.setParentSort(builder.substring(0, builder.lastIndexOf(","))); // } else { // StringBuilder builder = new StringBuilder(); // for (int j = parentSorts[0]; j <= parentSorts[parentSorts.length - 1]; j++) { // if ((builder + "").equals("")) { // builder.append(j); // } else { // builder.append(",").append(j); // } // } // patentRight.setParentSort(builder + ""); // } // // } else if (matcher1.find()) { // String parentNum = matcher1.group().substring(matcher1.group().indexOf("权利要求") + 4); // patentRight.setParentSort((Integer.parseInt(parentNum) - 1) + ""); // } // } else { // //否则该权要为主权要 // patentRight // .setType(1) // .setParentSort("-1"); // } // // patentRights.add(patentRight); // } // // return patentRights; // } catch (Exception e) { // e.printStackTrace(); // ArrayList patentRights = new ArrayList<>(); // patentRights.add(new PatentRight().setContent(params.getContent())); // return patentRights; // } // // } // //}