正则表达式,字符串中需要两个反斜杠“\\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}), 输出结果少了一个 反斜杠,说明索引号字符串中的\\会转义!

时间: 2024-10-10 19:59:21

正则表达式,字符串中需要两个反斜杠“\\d”的相关文章

元字符为名称的时候,使用两个反斜杠转义:\\

使用任何的元字符(如 !"#$%&'()*+,./:;<=>[email protected][\]^`{|}~)作为名称的文本部分, 它必须被两个反斜杠转义:\\ <span id="foo[bar]"></span> #foo\\[bar\\]

thinkphp5.0查询到的数据表中的路径是反斜杠导致无法正常显示图片怎么办?

添加到数据表中图片的路径有时会是反斜杠,这就导致了在url后面写路径的时候会识别不出来(不过src后面写路径就可以识别),所以就需要把路径中的反斜杠替换成正斜杠,代码如下: 1 $datu = Db::query('select images from think_ad where ad_position_id = 22'); 2 $str = ""; 3 foreach($datu as $v) 4 { 5 $str .= implode($v); 6 $str .= "|

JS正则四个反斜杠的含义

我们首先来看如下代码,在浏览器中输出的是什么? // 在浏览器中输出的 console.log('\\'); // 输出 \ console.log('\\\\'); // 输出 \\ 一:js正则直接量语法对 反斜杠的含义 1.1  \. 一个反斜杠加点号(.)  var reg1 = /^\.$/g; console.log(reg1.test('.')); // 输出 true, 因为 \. 是对元字符.进行转义,因此匹配字符串中的. console.log(reg1.test('a'))

python 正则表达式中反斜杠(\)的麻烦和陷阱

这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题.(1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为在正则表达式中,"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四

python&#160;正则表达式中反斜杠(\)的麻烦和陷阱&#160;(转)

这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题.(1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为在正则表达式中,"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四

AS3中正则表达式对反斜杠的替换

一个有趣的小问题,下面的正则表达式能替换成功么? var __str:String = \'12346789\'; trace(__str.replace(/\\/g, \'5\')); 答案是:不能.trace出来的结果为: [trace] 12346789 其实正则本身并没有写错,错在被替换的字符串.反斜杠“”在AS3中是转义符,会将其后的任何值转换为本身,因此看到的字符串其实本身就是12346789,也就是没有反斜杠,当然无法搜索到. 直接trace(__str),结果和上面的trace相

[Asp.net]c#中的斜杠和反斜杠

引言 在外地出差,给客户部署项目,三家做的项目要在一起集成,这就造成数据格式不同,路径中的斜杠和反斜杠造成了很大的问题. 查了一下这方面的资料,这里做一些记录,算是一个小结吧. 正斜杠(/)与反斜杠(\)总结 正斜杠/表示除法,分隔.在windows系统中通常用来分隔命令行参数,/表示选项等.不能作为文件名. 反斜杠\,在windows系统中用来表示目录. 而在unix系统中,/表示目录.由于web遵循unix命名,所以在网址(URL)中,/表示目录. C#中反斜杠\与斜杠/ 转移字符路径的问题

java 和 JS(javaScript)中的反斜杠正则转义

首先说下为什么要转义.在正则中有些字符有特殊含义的,比方说 * 可以前一子表达式的任意次,. 表示除"\r\n"之外的任何单个字符,+ 表示前一子表达式的一次或多次,等.而在有些情况下,需要正则验证这些字符,比方说要验证加减乘除四个运算符号,为了告诉编译器,你要验证的是一个字符而不是正则表达式,就要对这些有特殊含义的字符进行转义,这样就有了转义这一操作. 在java 和javascipt中,都是用反斜杠"\"进行转义,然后两种语言的用法不尽相同,下面举例说明: 1.

绝对路径以及相对路径中的斜杠和反斜杠

一.C++文件中的路径 文件路径中的正斜杠和反斜杠 正斜杠,又称左斜杠,符号是"/": 反斜杠,也称右斜杠,符号是"\". 文件路径的表示可以分为绝对路径和相对路径: 1. 绝对路径 绝对路径表示相对容易, 例如要打开"C: \Documents andSettings\All Users\My Documents\Downloads\pillow.jpg",则: Fp =fopen("C: \\Documents andSetting