zoukankan      html  css  js  c++  java
  • 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去查询。

  • 相关阅读:
    MySQL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用
    MySQL 标量子查询
    MySQL 子查询(subquery)语法与用法实例
    如何上传本地音乐获取MP3外链(欢迎分享和转载)
    RabbitMQ与Kafka的区别及其简单原理实现
    MySQL中varchar和char的区别
    MySQL降低insert, update, delete的优先级来优化性能
    Eclipse代码自动提示
    Java生成XML文件
    Java读取XML文件
  • 原文地址:https://www.cnblogs.com/theRhyme/p/10310709.html
Copyright © 2011-2022 走看看