• 正则表达式,字符串中需要两个反斜杠“\d”


    这个正则表达式为什么会有两个反斜杠?

    "^.*?\.(jpg|png|bmp|gif)$"上面这个正则表达式为什么有两个反斜杠呢?反斜杠点.就能表示点.了,为什么还要在.前面多加一个?

    -----------------

    这要分两步
    首先字符串中的\被编译器解释为         -------》  第一步,编译器将字符串转变为“正则表达式”
    然后作为正则表达式,.又被正则表达式引擎解释为.   ----------------> 第二步,才开始把第一步的结果当做是正则表达式,开始进行匹配!

    如果在字符串里只写.的话,第一步就被直接解释为.,之后作为正则表达式被解释时就变成匹配任意字符了

         String line = "This order was placed for QT30012!bmmmb OK?8976a";
            String pattern = "(\d{2,3})";
    
            Pattern r = Pattern.compile(pattern);
    
            // Now create matcher object.
            Matcher m = r.matcher(line);
            if (m.find()) {
                System.out.println("Found value: " + m.group(0));
            }else{
                 System.out.println("NO MATCH");
            }        
    

      

     -------------------------------------------------------------------------2017年8月29日20:31:49 补充------------------------------------

    验证一下,我们的“两步论!”

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class Sa {
    
        public static void main(String args[]) {
            // String to be scanned to find the pattern.
            String line = "This order was placed for QT30012!bmmmb OK?8976a";
            String pattern = "(\d{2,3})";
    
            System.out.println(pattern);
    
    /*        Pattern r = Pattern.compile(pattern);
    
            // Now create matcher object.
            Matcher m = r.matcher(line);
            if (m.find()) {
                System.out.println("Found value: " + m.group(0));
                System.out.println("Found value: " + m.group(1));
                System.out.println("Found value: " + m.group(2));
                System.out.println("Found value: " + m.group(3));
            } else {
                System.out.println("NO MATCH");
            }
         */
        }   
    }
    

      

     代码中是 (\d{2, 3}), 输出结果少了一个 反斜杠,说明索引号字符串中的\会转义!

  • 相关阅读:
    std::sort运行出core(segment fault)
    C++编译报错:重复定义
    《改变世界的九大算法》读书笔记
    简单排序实现
    Django 常见错误总结
    python 进行机器学习
    python中matplotlib 的简单使用
    十四:生成器函数和迭代器函数
    十三:装饰器函数
    十二:重要的内置函数
  • 原文地址:https://www.cnblogs.com/oxspirt/p/7450112.html
Copyright © 2020-2023  润新知