栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【javaSE】java和正则表达式,转义字符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【javaSE】java和正则表达式,转义字符

前言

我又来了,还是关于转义字符,并不是我对转义字符情有独钟,而是不理解它,我就不好编写正则表达式,因此我呕心沥血,写下这篇文章。
同时也希望这篇文章对大家有所帮助~

 

1.正题

这一次,我仅仅只是想检索字符串中的 . 因此我写了以下代码:
因为 . 在正则表达式中有特殊含义,所以不能单独写成 .

public static void main(String[] args) {
	String content = "abc"\(.ad\"(ad.fa)\.daf(";
	 String regex = ".";
	Pattern pattern = Pattern.compile(regex);
	Matcher matcher = pattern.matcher(content);
	while(matcher.find()){
		System.out.println("找到:"+matcher.group(0));
	}
}

我加了一个 ,理所当然地第3行报错了,因为在java中不能单独出现 符号,所以要写两个 \
在我之前认为,像 d,w,s这些才要写成两个\,但是当我想要让 . 表示成普通字符时也要写两个\

为什么?

终究是我对转义字符的理解不到位啊
 

2.理解

这是因为java中有转义字符,而正则表达式中同样也有

而转义的先后顺序是,先通过java的转义,然后再进行正则中的转义,
如:当我想要检索字符串中的 时,应当如下编写:

public static void main(String[] args) {
	String content = "abc"\(.ad\"(ad.fa)\.daf(";
	String regex = "\\";
	Pattern pattern = Pattern.compile(regex);
	Matcher matcher = pattern.matcher(content);
	while(matcher.find()){
		System.out.println("找到:"+matcher.group(0));
	}
}

想要让 在java的正则表达式中表示成一个普通字符,应该使用四个 。
首先进行java的转义,那么前面两个 会转义成正则表达式中的一个 ,后面的两个 也会转义成正则表达式中的一个 ,最后在正则表达式中有两个 ,然后再进行正则表达中的转义,成为一个普通字符 。

 

3.最后

即然java中也有转义,正则中也有转义,那么两者有何不同呢?

特殊含义的转义,如下:

java: b  t  n …
正则: d  w  s…

作为普通字符需要转义的字符,如下:
java: "   ’  
正则:(  )  $  /      ?  [  ]  ^  {  }

其中,字符 是特别的,因为它无论是在java还是正则中,都是表转义的字符。因此,想让它最终在正则中表示成普通字符,需要经过两层转义。
那么这样的话,在正则中就应该有两个 ,而在正则中有两个 ,那么java中将需要用到四个 。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号