`

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

    博客分类:
  • Java
阅读更多

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

(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;
	}

 

0
0
分享到:
评论

相关推荐

    C# 正则应用之——最全的日期正则表达式 没有之一

    因应用场景的不同,写出的正则也不同,复杂程度也自然不同。正则的书写需要根据具体情况具体分析,一个基本原则就是:只写合适的,不写复杂的。 对于日期提取,只要能与非日期区分开,写最简单的正则即可,如 \d{4}-...

    C# 最全的日期正则表达式,没有之一

    考虑到这个正则表达式仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。 ^(?:(?!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和java的正则表达式

    详细的介绍js的正则表达式,和常用的应用场景

    正则表达式

    各种场景的正则表达式,内容很详细,包括常用的正则表达式和一些比较少见的

    定制爬虫工具(sqlserver版),通过正则表达式自定义抓取模版,通过自定义数据模型入库.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    JS中常用的正则表达式

    以下收录一些我经常用到的正则表达式,因为工作场景中用到正则的地方几乎都跟validate插件的验证有关系,所以以下正则也是$.validator.addMethod() 的拓展: validate: http://jqueryvalidation.org/ 电话验证 /** ...

    PHP正则表达式处理函数(PCRE 函数)实例小结

    有时候在一些特定的业务场景中需要匹配,或者提取一些关键的信息,例如匹配网页中的一些链接, 提取一些数据时,可能会用到正则匹配。 下面介绍一下php中的一些常用的正则处理函数。 一、preg_replace($pattern,$...

    Jquery常用正在表达式验证

    常用的正则表达式验证,非常好用,可以自己添加和验证

    全国计算机等级考试二级python的学习笔记

    - Python正则表达式:正则表达式的基本语法和应用场景。 - 文本数据处理:字符串常用操作方法。 4. Python高级特性 - Python迭代器和生成器:迭代器协议、生成器函数和生成器表达式。 - Python函数式编程:Lambda...

    JS使用正则截取两个字符串之间的字符串实现方法详解

    本文实例讲述了JS使用正则截取两个字符串之间的字符串方法。分享给大家供大家参考,具体如下: ...第二个是子正则表达式,什么是子正则表达式,()里面的内容就是子正则表达式,就是指\s*,这才是我们要的东西

    公司内部QTP培训PPT

    该资源是公司内部培训PPT,一共分四次 在每次的PPT中涉及的实例都是用公司内部系统完成 ...14.正则表达式的运用 15.Html中DOM的运用 16.VBS操作数据库 17.WshShell介绍 20.函数资源库、环境变量、常用保留对象

    QTP应用培训-更新

    由于CSDN不能修改上传的资源,前面上传的PPT,现在进行了整合, 内容更详细,且更连贯 QTP介绍 菜单介绍 实例 QTP对象库原理 QTP对象库编程 QTP描述性编程 QTP的RO与TO QTP的参数化-DataTable ...VBS-正则表达式

    蜂巢爬虫系统 .zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    开篇词讲怎样才能做好性能调优02讲如何制定性能调优策略04讲慎重使用正则表达式05讲ArrayList还是LinkedList使用不当性能差千倍07讲深入浅出HashMap的设计与优化08讲网络通信优化之IO模型:如何解决高并发下IO瓶颈09...

    精通QTP——自动化测试技术领航

    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 ...

    SpiderApi - 虫术 - 爬虫逆向常用 API.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    轻量级爬虫工具,快速部署、断点续爬、操作简单,用于垂直爬取需求多百万量级的场景,达到事半功倍的效果。.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    百度贴吧爬虫及常用管理接口的整理和管理工具的实现.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    一些爬虫测试.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    一些爬虫逆向算法.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

Global site tag (gtag.js) - Google Analytics