正则表达式的一些常用场景 博客分类: Java 正则表达式regularregux
程序员文章站
2024-02-23 18:58:04
...
正则表达式的一些常用场景
(1)过滤表情符号
/*** * 过滤表情符号<br> * see:http://blog.csdn.net/beatrice_g20/article/details/48489437 * * @param str * @return */ public static String filterExpression(String str) { if (ValueWidget.isNullOrEmpty(str)) { return str; } String pattern = "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]"; Pattern emoji = Pattern.compile(pattern); Matcher emojiMatcher = emoji.matcher(str); str = emojiMatcher.replaceAll(SystemHWUtil.EMPTY); return str; }
应用:
String anser = convention.getAnswer(); if (!ValueWidget.isNullOrEmpty(anser)) { anser = RegexUtil.filterExpression(anser); convention.setAnswer(anser); }
(2)删除重复的行(必须是相连的)
/*** * 删除重复的行(必须是相连的) * @param input * @return */ public static String deleteDuplicateRow(String input) { if (ValueWidget.isNullOrEmpty(input)) { return input; } String[] rows = input.split(SystemHWUtil.CRLF); List<String> stringlist = new ArrayList<>(); for (int i = 0; i < rows.length; i++) { stringlist.add(rows[i]); } // 搜索结果是经过排序的,根据此规律删除不合要求File for (int i = 0; i < stringlist.size() - 1; i++) { if (stringlist.get(i).equals(stringlist.get(i + 1))) { stringlist.remove(i); if (i != 0) i--; } } return SystemHWUtil.formatArr(stringlist, SystemHWUtil.CRLF); }
应用:
System.out.println("input:"+input); String unicodeStr = input.replace("\"3e[\r][\n]\"", "").replaceAll("\\[[\\s]*0[xX][\\s]*([\\w]{2})\\]", "%$1") .replaceAll("\\[0[xX]([\\w]{1})\\]", "%0$1"); // ComponentUtil.appendResult(resultTextArea, unicodeStr, true,false); unicodeStr=RegexUtil.dealCiaResponseRequest(unicodeStr, true); // unicodeStr=RegexUtil.dealCiaResponse(unicodeStr,Constant2.REGEX_DELETE_FRONT_OF_CIA, true); //删除重复的行(必须是相连的) unicodeStr = RegexUtil.deleteDuplicateRow(unicodeStr);
(3)驼峰标识
/*** * 驼峰标识<br> * * @param input : aaa_bbb_ccc_ddd * @return : aaaBbbCccDdd */ public static String humpMarking(String input){ Pattern p=Pattern.compile("_[a-z]"); Matcher m=p.matcher(input); StringBuffer sb = new StringBuffer(); boolean result=m.find(); while(result){ String findResult=m.group().toUpperCase().replaceAll("^_", SystemHWUtil.EMPTY); m.appendReplacement(sb, findResult); result=m.find(); } m.appendTail(sb); return sb.toString().replaceAll("_$", SystemHWUtil.EMPTY); }
(4)把换行的段落当做字符串拼接
/*** * 把换行的段落当做字符串拼接 * @param input * @param cr * @param quote * @return */ public static String splitPlus(String input, String cr, String quote, boolean keepBlank) { input=input.replaceAll(cr+"+$",""); String chinese; // String quote="\""; String replacement = quote + " + SystemHWUtil.CRLF +$1" + quote + "$2"; String regex = null; String regexMutip = null;//是否匹配多个换行 if (keepBlank) {//保持空格 <br />[^\n\r]表示不是换行 regex = "([^\n\r]*)"; regexMutip = ""; } else { regex = "[\\s]*([^\\s]+.*)"; regexMutip = "+"; } input=input.replace(quote, "\\"+quote);//原字符串转义 //简单点说,就是把[换行]替换为['(单引号)+(加号)'(单引号)] //所以最前面和最后面需要各补一个单引号 if(cr.equals("\\r\\n")){ chinese = input.replaceAll("(\r\n)" + regexMutip + regex, replacement); }else if(cr.equals("\\n")){ chinese = input.replaceAll("(\n)" + regexMutip + regex, replacement); }else if(cr.equals("\\r")){ chinese = input.replaceAll("(\r)" + regexMutip + regex, replacement); }else{ chinese = input.replaceAll("(\n\r)" + regexMutip + regex, replacement); } return quote + chinese + quote + " ;"; }
应用:
public static String splitPlus(String input, String cr, String quote) { return splitPlus(input, cr, quote, false); } @Override public String callbackAdditional(String input, Object crfl) { return RegexUtil.splitPlus(input, (String) crfl, "\"", true); }
(5)是否包含指定字符串,不区分大小写
/*** * 是否包含指定字符串,不区分大小写 * * @param input * : 原字符串 * @param regex * @return */ public static boolean contain2(String input, String regex) { /*** * input:(1)bss登录(2) <br> regex:bss登录(2) */ regex = regex.replace("(", "\\("); regex = regex.replace(")", "\\)"); if (ValueWidget.isNullOrEmpty(input)) { return false; } Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(input); boolean result = m.find(); return result; }
推荐阅读
-
正则表达式的一些常用场景 博客分类: Java 正则表达式regularregux
-
一个完整的混合加密方式在Socket客户机服务器通信应用中的例子 博客分类: java 应用服务器Socket正则表达式SecurityGmail
-
Java 中的正则表达式 博客分类: Java基础笔记 正则表达式JavaUnixF#J2SE
-
Java 中的正则表达式 博客分类: Java基础笔记 正则表达式JavaUnixF#J2SE
-
收集的一些常用java正则表达式
-
收集的一些常用java正则表达式
-
正则表达式java PHP一些常用的正则表达式字符的一些转换
-
正则表达式java PHP一些常用的正则表达式字符的一些转换