• Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能


    Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量不具有任何匹配功能。

    下面是个例子:

    import org.junit.Test;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Pattern;
    
    public class TestPattern {
    
        @Test
        public void testQuote(){
            List<String> stringList = new ArrayList<>();
            stringList.add("Hi123HitianHiyan");
            stringList.add("Hiaaa");
            stringList.add("aaa");
            stringList.add("Hi\/*");
            stringList.add("Hi\w*123");
            stringList.add("Hi\w*");
    
            final String patternString = "Hi\w*";
    
            //根据patternString正则表达式匹配数组
            System.out.println("---patternString---");
            for (String string : stringList){
                if(Pattern.matches(patternString, string)){
                    System.out.println(string);
                }
            }
    
            System.out.println("---quote---");
            String quote = Pattern.quote(patternString);
            System.out.println("patternString:"+quote);
            for (String string : stringList){
                if(Pattern.matches(quote, string)){
                    System.out.println(string);
                }
            }
    
        }
    
    }

    执行之后,结果如下:

    可以看到,正则表达式"Hi\w*"匹配以"Hi"开头的后面任意个数字、字母、下划线、汉字;

    然后使用了Pattern.quote("Hi\w*")后,该方法的返回值就是"QHi\w*E",这就是表示一个字符串常量"Hi\w*",不具有原来正则表达式的功能,只匹配该字符串常量

    场景

    接口接收一个参数name,模糊查询时只想要匹配name的字符串,这是接收到这个参数就可以使用name = Pattern.quote(name),用处理后的name去查询。

  • 相关阅读:
    Linux curl使用简单介绍
    SecureCRT编码转换vim
    BigTable/HBase基本概念解读 & Hbase shell常用命令
    Crontab用法说明(Linux)
    Sina SSO 登陆过程分析
    浅谈队列
    搞怪的 log4net 记录日志 性能测试
    iBatis.Net异步多线程 操作Ibatis报错
    高并发高负载的大型网站系统架构
    [置顶] IIs Web 站点安全 监控 站点自动部署 重启
  • 原文地址:https://www.cnblogs.com/theRhyme/p/10310709.html
Copyright © 2020-2023  润新知