JAVA 中转义符的理解
生物信息中有时候会遇到JAVA写的程序,今天阅读源码的时候发现对于正则中的转义符不好理解,后来查资料后终于弄明白了,这里详细说明一下:
字符串的表示有三种方法:1、直接单字符,例如“A”;2、由转义字符表示的特殊字符,例如“\t”; 3、Unicode字符,例如“\u0008”。其中转义字符表示的字符串,显示出来的就是这种模式,例如“\t”与“ ”是同一个字符串,“abc\tefg”与"abc efg"是同一个字符串。
但是单独的“\”是不能出现在JAVA的字符串中作为字符串的,比如说如果要打印“abc\efg”,这时会报错:“错误:非法转义符”。这是因为系统把“\e“当做转义符,但是实际上并没有这个转义符。如果真的要将“\”作为一个符号打印输出,那么就应该在"\"前面再加一个“\”以表示后面的“\”是要被输出,例如打印输出“abc\\efg”,这时终端就会显示“abc\efg”。
同样的在正则表达式中,“\u0041\\\\” 将匹配"A\"。 乍一看有点晕,怎么有这么多反斜杠。前面已经讲过了,这时因为在JAVA中‘\’单独出现会报错,所以此处的四个“\\\\”可以看成两个,而这两个“\\”又可以看成是对一个“\”的转义了(在正则表达式中)。例子如下: 打印输出“abc\\\efg”时会报错“错误:非法转义符”;打印输出“abc\\\\efg”时显示“abc\\efg”;打印输出"abc\\\\\efg"时同样的报错,而打印输出"abc\\\\\\efg”则显示“abc\\\efg”。
总结一下,也就是说,如果在字符串中如果出现了多个“\”连在一起,那么两个两个一起看。如果在正则表达式中出现了多个“\”连在一起,那么要四个四个一起看,这四个一起是匹配一个“\”字符,因为如果只有两个“\”的话,那么实际上就是一个“\”,它后面还要有例如‘t’,'d'这样的字符跟着才能表示转义,否则就会报错。
JAVA 中转义符的理解的更多相关文章
- Java中线程同步的理解 - 其实应该叫做Java线程排队
Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread). 线程(Thread)是一份独立运行的程序,有自己专用的运行栈.线程有可 ...
- java中线程同步的理解(非常通俗易懂)
转载至:https://blog.csdn.net/u012179540/article/details/40685207 Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运 ...
- 关于js中单双引号以及转义符的理解
关于js中单引号(')和双引号(")的使用以及转义的理解 这几天一直在画页面,身为开发人员的我之所以要画页面是因为当前项目中的页面上所有的东西都是从数据库中取得的,也就是动态的,类似于我们设 ...
- Dos中转义符
遇到个问题: java test R=<file> 11 22 按理说应该打印 R=<file> 11 22 但是,系统报错,写的是系统找不到指定文件. 是"< ...
- 微冷的雨之Java中的多线程初理解(一)
在讲解多线程前,我们必须理解什么是多线程?而且很多人都会将进程和线程做对比. 进程和线程 进程:进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在 ...
- 对Java中字符串的进一步理解
字符串在程序开发中无处不在,也是用户交互所涉及到最频繁的数据类型,那么字符串不仅仅就是我们简单的理解的String str = "abc";一起来更加深入的看一下 在Java中,字 ...
- Java中的ThreadLocal深入理解
提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?等等问题,本文将总结一下我对ThreadLocal的理解和 ...
- Java学习疑惑(8)----可视化编程, 对Java中事件驱动模型的理解
我们编写程序就是为了方便用户使用, 我觉得UI设计的核心就是简洁, 操作过于繁琐的程序让很大一部分用户敬而远之. 即使功能强大, 但是人们更愿意使用易于操作的软件. 近年流行起来的操作手势和逐渐趋于成 ...
- java中修饰符及其用法
1. java中的修饰符 a. 权限修饰符 private,默认的,protected,public b. 状态修饰符 static,final c. 抽象修饰符 abstract 2. 类修饰符 p ...
随机推荐
- JavaScript 评论添加练习
JavaScript 评论添加练习 本次所学内容: //var str = '<li>'+value+'</li>'; 支付串和变量的拼接 //ul.innerHTML += ...
- python列表基础操作
Python列表基本操作 记住一句话,叫做顾首不顾尾 首先我们来定义一个列表 name = ["jixuege","dajiba","boduoye& ...
- Java基础语法<十> Jar文件
1 JAR文件 java归档文件,压缩的 jdk/bin jar工具制作jar文件 jar程序选项 1.1清单文件 ...
- scrapy爬取中关村在线手机频道
# -*- coding: utf-8 -*- import scrapy from pyquery import PyQuery as pq from zolphone.items import Z ...
- 【转载】Linux下安装、配置、启动Apache
原文地址:http://www.cnblogs.com/zhuque/archive/2012/11/03/2763352.html 安装Apache前准备: 1.检查该环境中是否已经存在httpd服 ...
- 面向面试题和实际使用谈promise
"金三银四,金九银十",都是要收获的季节.面对各种面试题,各种概念.原理都要去记,挺枯燥的.本文是面向面试题和实际使用谈一下Promise. Promise是什么? Promise ...
- 学习ASP.NET Core Razor 编程系列六——数据库初始化
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 三,前端---JS最基本的创建对象的方法
1:工厂模式 function createPerson(name, job){ var person = new Object(); person.name = name; person.job = ...
- [LeetCode] Delete and Earn 删除与赚取
Given an array nums of integers, you can perform operations on the array. In each operation, you pic ...
- [LeetCode] Base 7 基数七
Given an integer, return its base 7 string representation. Example 1: Input: 100 Output: "202&q ...