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

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

(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.      */  
  6.     public static String humpMarking(String input){  
  7.         Pattern p=Pattern.compile("_[a-z]");  
  8.         Matcher m=p.matcher(input);  
  9.         StringBuffer sb = new StringBuffer();  
  10.         boolean result=m.find();  
  11.         while(result){  
  12.             String findResult=m.group().toUpperCase().replaceAll("^_", SystemHWUtil.EMPTY);  
  13.             m.appendReplacement(sb, findResult);  
  14.             result=m.find();  
  15.         }  
  16.         m.appendTail(sb);  
  17.         return sb.toString().replaceAll("_$", SystemHWUtil.EMPTY);  
  18.     }  

 

(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.      */  
  6.     public static boolean contain2(String input, String regex) {  
  7.         /*** 
  8.          * input:(1)bss登录(2) <br> 
  9.          regex:bss登录(2) 
  10.          */  
  11.         regex = regex.replace("(""\\(");  
  12.         regex = regex.replace(")""\\)");  
  13.         if (ValueWidget.isNullOrEmpty(input)) {  
  14.             return false;  
  15.         }  
  16.         Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);  
  17.         Matcher m = p.matcher(input);  
  18.         boolean result = m.find();  
  19.         return result;  
  20.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值