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

"^.*?\\.(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}), 输出结果少了一个 反斜杠,说明索引号字符串中的\\会转义!

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

  1. (转载)MySQL中执行sql语句反斜杠需要进行转义否则会被吃掉

    (转载)http://www.phpcode8.com/lamp/mysql-lamp/mysql-escape-slash.html 最近在执行一个sql备份的还原后,发现系统的部分路径找不到,于是 ...

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

    添加到数据表中图片的路径有时会是反斜杠,这就导致了在url后面写路径的时候会识别不出来(不过src后面写路径就可以识别),所以就需要把路径中的反斜杠替换成正斜杠,代码如下: $datu = Db::q ...

  3. Mysql 中 like 查询存在反斜杠的解决办法

    如 要查询   %\ABC\% 应该这样写, 写成四个反斜杠 like '%\\\\ABC\\\\%'

  4. Java中将一个反斜杠转换成两个反斜杠

    代码示例: s = s.replaceAll("\\\\", "\\\\\\\\");

  5. python 中的反斜杠匹配的问题

    关于反斜杠的匹配问题可以参考: https://www.cnblogs.com/mzc1997/p/7689235.html 文章中提出了两个概念: 字符串转义和正则转义,我觉得是理解反斜杠的关键所在 ...

  6. JS正则四个反斜杠的含义

    我们首先来看如下代码,在浏览器中输出的是什么? // 在浏览器中输出的 console.log('\\'); // 输出 \ console.log('\\\\'); // 输出 \\ 一:js正则直 ...

  7. JAVA正则表达式中如何匹配反斜杠 \

    有时候我们需要匹配反斜杠,你可能会把对应的正则表达式写成 "\\" 然后可能会有如下输出: Exception in thread "main" java.ut ...

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

    这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题. (1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     ...

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

    引言 在外地出差,给客户部署项目,三家做的项目要在一起集成,这就造成数据格式不同,路径中的斜杠和反斜杠造成了很大的问题. 查了一下这方面的资料,这里做一些记录,算是一个小结吧. 正斜杠(/)与反斜杠( ...

随机推荐

  1. iis 服务器而配置php运行环境

    第一步 下载php 下载压缩包就可以了 第二步 解压缩php到某个目录,比如D:\php php目录里面有两个php.ini,一个是php.ini-dist,比较适合开发用:一个是php.ini-re ...

  2. 【学习笔记】线段树—扫描线补充 (IC_QQQ)

    [学习笔记]线段树-扫描线补充 (IC_QQQ) (感谢 \(IC\)_\(QQQ\) 大佬授以本内容的著作权.此人超然于世外,仅有 \(Luogu\) 账号 尚可膜拜) [学习笔记]线段树详解(全) ...

  3. 涨知识 - II

    计算机网络相关 1.在无盘工作站向服务器申请IP地址时,使用的是(     )协议. A.ARP B.RARP C.ICMP D.IGMP 解析: ARP(地址解析协议)是设备通过自己知道的IP地址来 ...

  4. eclipse 安装svn插件记录

    每个人都有自己喜欢的和习惯的一套开发环境,其中对于喜欢用eclipse的同学来说.subclipse插件可以说是必不可少的插件了. 他的安装有两种方法,一种是在线安装.然而这种安装实在是太慢了,无法忍 ...

  5. css3 绘制书本

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. Android studio USB连接失败

    Android studio USB连接失败,可能是因为adb的端口被占了,此时在其自带的cmd中输入netstat -aon|findstr "5037",并且启动任务管理器关掉 ...

  7. CSS——伪类

    在a标签中运用最多: 1.a:link {color: #FF0000} /* 未访问的链接 */ 2.a:visited {color: #00FF00} /* 已访问的链接 */ 3.a:hove ...

  8. 【译】x86程序员手册17-第6章保护

    Chapter 6 Protection 第六章 保护 6.1 Why Protection? 为什么要保护? The purpose of the protection features of th ...

  9. Ubuntu14.4安装mysql

    一.安装 apt-get install mysql-server mysql-client 设置用户名和密码 二.检查 sudo service mysql restart 三.支持 1.apach ...

  10. (转)postgis常用函数介绍(二)

    http://blog.csdn.net/gisshixisheng/article/details/47903151 概述: 书接上文,本文继续讲解Postgres中常用的空间函数的使用. 常用函数 ...