正则表达式的一些常用场景
(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; }
相关推荐
因应用场景的不同,写出的正则也不同,复杂程度也自然不同。正则的书写需要根据具体情况具体分析,一个基本原则就是:只写合适的,不写复杂的。 对于日期提取,只要能与非日期区分开,写最简单的正则即可,如 \d{4}-...
考虑到这个正则表达式仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。 ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2...
详细的介绍js的正则表达式,和常用的应用场景
各种场景的正则表达式,内容很详细,包括常用的正则表达式和一些比较少见的
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
以下收录一些我经常用到的正则表达式,因为工作场景中用到正则的地方几乎都跟validate插件的验证有关系,所以以下正则也是$.validator.addMethod() 的拓展: validate: http://jqueryvalidation.org/ 电话验证 /** ...
有时候在一些特定的业务场景中需要匹配,或者提取一些关键的信息,例如匹配网页中的一些链接, 提取一些数据时,可能会用到正则匹配。 下面介绍一下php中的一些常用的正则处理函数。 一、preg_replace($pattern,$...
常用的正则表达式验证,非常好用,可以自己添加和验证
- Python正则表达式:正则表达式的基本语法和应用场景。 - 文本数据处理:字符串常用操作方法。 4. Python高级特性 - Python迭代器和生成器:迭代器协议、生成器函数和生成器表达式。 - Python函数式编程:Lambda...
本文实例讲述了JS使用正则截取两个字符串之间的字符串方法。分享给大家供大家参考,具体如下: ...第二个是子正则表达式,什么是子正则表达式,()里面的内容就是子正则表达式,就是指\s*,这才是我们要的东西
该资源是公司内部培训PPT,一共分四次 在每次的PPT中涉及的实例都是用公司内部系统完成 ...14.正则表达式的运用 15.Html中DOM的运用 16.VBS操作数据库 17.WshShell介绍 20.函数资源库、环境变量、常用保留对象
由于CSDN不能修改上传的资源,前面上传的PPT,现在进行了整合, 内容更详细,且更连贯 QTP介绍 菜单介绍 实例 QTP对象库原理 QTP对象库编程 QTP描述性编程 QTP的RO与TO QTP的参数化-DataTable ...VBS-正则表达式
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
开篇词讲怎样才能做好性能调优02讲如何制定性能调优策略04讲慎重使用正则表达式05讲ArrayList还是LinkedList使用不当性能差千倍07讲深入浅出HashMap的设计与优化08讲网络通信优化之IO模型:如何解决高并发下IO瓶颈09...
3.1正则表达式 3.2 HTML DOM测试应用 3.2.1 了解DOM在QTP中应用的好处 3.3 数据库操作(ADO) 3.4 Excel—数据驱动必备利器 3.5 WshShell对象常用方法介绍 3.6 FSO对象模型 3.7 重要的Test Design Studio 3.8 ...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...
常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...