`

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

    博客分类:
  • 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
分享到:
评论

相关推荐

    正则表达式-常用正则表达式大全

    ### 正则表达式-常用正则表达式大全 #### 一、正则表达式的概念与作用 正则表达式(Regular Expression),通常被简称为regex...掌握正则表达式的基本语法和常见应用场景对于提高工作效率、优化程序逻辑都大有裨益。

    常用正则表达式大全.txt

    根据提供的文件信息,我们可以整理出一系列与正则表达式相关的...以上内容概括了从文件中提取出来的正则表达式知识点,这些知识点覆盖了正则表达式的多个应用场景,对于从事软件开发、数据分析等领域的人来说非常实用。

    常用正则表达式HTML,JAVA合集

    在这个“常用正则表达式HTML,JAVA合集”中,我们主要关注的是HTML和Java环境下的正则表达式应用。 1. **HTML中的正则表达式**: 在HTML中,正则表达式通常用于表单验证,例如输入字段(如邮箱、电话号码、手机号码...

    强大的正则表达式生成工具 C#版

    5. **常见模式库**:内置常用正则表达式模式,如邮箱、电话号码、日期等,方便用户选择使用。 6. **教程和文档**:提供详细的正则表达式使用指南和C# API参考,帮助用户学习和理解正则表达式。 7. **版本控制**:...

    日期正则表达式(很实用)

    本文将详细介绍几种常用的日期正则表达式及其原理。 #### 二、简单日期格式验证 ##### 1. YYYY/MM/DD 格式的日期验证 最基础的日期格式是`YYYY/MM/DD`,这种格式下日期的正则表达式为: ``` ^\d{4}(\-|\/|\.)\d{...

    易语言正则表达式匹配中文

    在易语言中,正则表达式是进行文本处理、数据提取和搜索的关键工具,尤其在处理中文字符时显得尤为重要。本文将深入探讨易语言中的正则表达式匹配中文的原理、方法以及应用。 正则表达式(Regular Expression)是一...

    正则表达式教程 常用正则表达式

    ### 正则表达式教程:常用正则表达式解析 #### 一、正则表达式简介 正则表达式(Regular Expression)是一种强大的文本处理工具,它可以用来进行字符串的搜索、替换等操作。通过简单的字符组合,正则表达式可以灵活...

    正则表达式大全.txt

    在深入探讨具体的正则表达式之前,我们先来了解一下正则表达式中常用的几个基本符号: - `^`:表示字符串的开头。 - `$`:表示字符串的结尾。 - `*`:匹配前面的子表达式零次或多次。 - `{n}`:精确匹配前面的子...

    正则表达式验证器,验证常用的编程语言的正则表达式

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。在编程中,正确构造和理解正则表达式至关重要,因为它们能帮助我们高效地处理字符串...

    深入浅出正则表达式,正则表达式详细介绍

    3. **Perl兼容正则表达式**(Perl Compatible Regular Expressions, PCRE):由Perl语言推广开来,成为最常用的正则表达式标准之一。 4. **其他引擎**:如.NET、Java等都有自己独特的实现。 #### 五、正则表达式的...

    IP地址的正则表达式

    在探讨“IP地址的正则表达式”这一主题时,我们首先需要理解IP地址的基本构成以及正则表达式的原理。IP地址(Internet Protocol Address)是互联网协议为网络上的每个节点分配的一个唯一标识符,用于在网络中定位和...

    最全的常用正则表达式大全

    ### 正则表达式知识点详解 #### 一、校验数字的正则表达式 **1.1 数字** - **表达式:** `^[0-9]*$` - **解释:** 匹配任意...通过上述的正则表达式集合,可以满足大多数应用场景中的数据校验需求。无论是数字、字符...

    常用正则表达式 正则表达式

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。它通过一种特殊的语法来描述一个字符串集合,可以非常灵活地表示各种复杂的字符串格式...

    Oracle正则表达式详解(用法+实例)

    在Oracle数据库中,正则表达式的应用非常广泛,例如用于数据有效性验证、重复词汇识别、空白检测等场景。 正则表达式的强大之处在于其字符元,这些特殊字符规定了如何解析正则表达式。掌握了各种字符元的意义后,就...

    正则表达式客户端工具

    1. 常用正则表达式库:工具内置了一套常用正则表达式模式,覆盖了常见的文本匹配需求,如邮箱地址验证、电话号码检查、URL检测等。这使得用户无需从头开始构建复杂的正则表达式,提高了工作效率。 2. 实时编辑与...

    正则表达式 正则表达式资料 正则表达式教程

    Ghost_Eye在其CSDN博客中分享了一些自己编写的正则表达式案例以及收集的优秀示例。这些内容对于那些正在寻找具体问题解决方案的开发者来说特别有用。 ### 三、如何高效学习正则表达式 #### 3.1 多实践 理论知识...

    JS常用正则表达式

    ### JS常用正则表达式知识点解析 #### 一、电子邮件地址验证 **功能说明:** 验证输入的字符串是否符合标准电子邮件地址格式。...以上是JS常用的正则表达式及详细解释,这些表达式可以用于各种前端表单验证等场景。

    正则表达式规则及常用正则表达式列举

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。它通过一系列特定的字符、符号和操作符来定义一个模式,以此来检查字符串是否符合这个...

Global site tag (gtag.js) - Google Analytics