正则表达式的一些常用场景

时间:2022-03-24 18:46:42

正则表达式的一些常用场景

(1)过滤表情符号

Java代码  正则表达式的一些常用场景

  1. /*** 

  2.     * 过滤表情符号<br> 

  3.     * see:http://blog.csdn.net/beatrice_g20/article/details/48489437 

  4.     * 

  5.     

  6.     */  

  7.    public static String filterExpression(String str) {  

  8.   

  9.        if (ValueWidget.isNullOrEmpty(str)) {  

  10.            return str;  

  11.        }  

  12.        String pattern = "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]";  

  13.        Pattern emoji = Pattern.compile(pattern);  

  14.        Matcher emojiMatcher = emoji.matcher(str);  

  15.        str = emojiMatcher.replaceAll(SystemHWUtil.EMPTY);  

  16.        return str;  

  17.    }  

 应用:下载

Java代码  正则表达式的一些常用场景

  1. String anser = convention.getAnswer();  

  2.   

  3.         if (!ValueWidget.isNullOrEmpty(anser)) {  

  4.             anser = RegexUtil.filterExpression(anser);  

  5.             convention.setAnswer(anser);  

  6.         }  

 

 

(2)删除重复的行(必须是相连的)

Java代码  正则表达式的一些常用场景

  1. /*** 

  2.      * 删除重复的行(必须是相连的) 

  3.     

  4.      */  

  5.     public static String deleteDuplicateRow(String input) {  

  6.         if (ValueWidget.isNullOrEmpty(input)) {  

  7.             return input;  

  8.         }  

  9.         String[] rows = input.split(SystemHWUtil.CRLF);  

  10.         List<String> stringlist = new ArrayList<>();  

  11.         for (int i = 0; i < rows.length; i++) {  

  12.             stringlist.add(rows[i]);  

  13.         }  

  14.         // 搜索结果是经过排序的,根据此规律删除不合要求File  

  15.         for (int i = 0; i < stringlist.size() - 1; i++) {  

  16.             if (stringlist.get(i).equals(stringlist.get(i + 1))) {  

  17.                 stringlist.remove(i);  

  18.                 if (i != 0) i--;  

  19.             }  

  20.         }  

  21.         return SystemHWUtil.formatArr(stringlist, SystemHWUtil.CRLF);  

  22.     }  

 应用:下载

Java代码  正则表达式的一些常用场景

  1. System.out.println("input:"+input);  

  2.                             String unicodeStr = input.replace("\"3e[\r][\n]\"""").replaceAll("\\[[\\s]*0[xX][\\s]*([\\w]{2})\\]""%$1")  

  3.                                     .replaceAll("\\[0[xX]([\\w]{1})\\]""%0$1");  

  4. //                          ComponentUtil.appendResult(resultTextArea, unicodeStr, true,false);  

  5.                             unicodeStr=RegexUtil.dealCiaResponseRequest(unicodeStr, true);  

  6. //                          unicodeStr=RegexUtil.dealCiaResponse(unicodeStr,Constant2.REGEX_DELETE_FRONT_OF_CIA, true);  

  7.                             //删除重复的行(必须是相连的)  

  8.                             unicodeStr = RegexUtil.deleteDuplicateRow(unicodeStr);  

 

 

(3)驼峰标识

Java代码  正则表达式的一些常用场景

  1. /*** 

  2.      * 驼峰标识<br> 

  3.      *  


  4.      */  

  5.     public static String humpMarking(String input){  

  6.         Pattern p=Pattern.compile("_[a-z]");  

  7.         Matcher m=p.matcher(input);  

  8.         StringBuffer sb = new StringBuffer();  

  9.         boolean result=m.find();  

  10.         while(result){  

  11.             String findResult=m.group().toUpperCase().replaceAll("^_", SystemHWUtil.EMPTY);  

  12.             m.appendReplacement(sb, findResult);  

  13.             result=m.find();  

  14.         }  

  15.         m.appendTail(sb);  

  16.         return sb.toString().replaceAll("_$", SystemHWUtil.EMPTY);  

  17.     }  

 

(4)把换行的段落当做字符串拼接

Java代码 下载 正则表达式的一些常用场景

  1. /*** 

  2.      * 把换行的段落当做字符串拼接 

  3.     

  4.      */  

  5.     public static String splitPlus(String input, String cr, String quote, boolean keepBlank) {  

  6.         input=input.replaceAll(cr+"+$","");  

  7.         String chinese;  

  8. //      String quote="\"";  

  9.         String replacement = quote + " + SystemHWUtil.CRLF +$1" + quote + "$2";  

  10.         String regex = null;  

  11.         String regexMutip = null;//是否匹配多个换行  

  12.         if (keepBlank) {//保持空格 <br />[^\n\r]表示不是换行  

  13.             regex = "([^\n\r]*)";  

  14.             regexMutip = "";  

  15.         } else {  

  16.             regex = "[\\s]*([^\\s]+.*)";  

  17.             regexMutip = "+";  

  18.         }  

  19.         input=input.replace(quote, "\\"+quote);//原字符串转义  

  20.         //简单点说,就是把[换行]替换为['(单引号)+(加号)'(单引号)]  

  21.         //所以最前面和最后面需要各补一个单引号  

  22.         if(cr.equals("\\r\\n")){  

  23.             chinese = input.replaceAll("(\r\n)" + regexMutip + regex, replacement);  

  24.         }else if(cr.equals("\\n")){  

  25.             chinese = input.replaceAll("(\n)" + regexMutip + regex, replacement);  

  26.         }else if(cr.equals("\\r")){  

  27.             chinese = input.replaceAll("(\r)" + regexMutip + regex, replacement);  

  28.         }else{  

  29.             chinese = input.replaceAll("(\n\r)" + regexMutip + regex, replacement);  

  30.         }  

  31.         return quote + chinese + quote + " ;";  

  32.     }  

 应用:

Java代码  正则表达式的一些常用场景

  1. public static String splitPlus(String input, String cr, String quote) {  

  2.         return splitPlus(input, cr, quote, false);  

  3.     }  

  4.   

  5. @Override  

  6.     public String callbackAdditional(String input, Object crfl) {  

  7.         return RegexUtil.splitPlus(input, (String) crfl, "\""true);  

  8.     }  

 

(5)是否包含指定字符串,不区分大小写

Java代码下载  正则表达式的一些常用场景

  1. /*** 

  2.      * 是否包含指定字符串,不区分大小写 

  3.     

  4.      */  

  5.     public static boolean contain2(String input, String regex) {  

  6.         /*** 

  7.          * input:(1)bss登录(2) <br> 

  8.          regex:bss登录(2) 

  9.          */  

  10.         regex = regex.replace("(""\\(");  

  11.         regex = regex.replace(")""\\)");  

  12.         if (ValueWidget.isNullOrEmpty(input)) {  

  13.             return false;  

  14.         }  

  15.         Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);  

  16.         Matcher m = p.matcher(input);  

  17.         boolean result = m.find();  

  18.         return result;  

  19.     }