java正則表達式的坑

java中正則表達式比較有意思,这里列举几个常见的坑

1.[]符号,中括号表示当中的数据都是或的关系

假设[\w+]是匹配条件 abc能否够匹配的到呢?

首先\w(注意这里没有中括号)表示a-z A-Z 0-9 _多个字符组合,显然abc随意一个在里面的,后又有+号。表示有多个字符,所以abc能够匹配\w+

可是[\w+]表示的意思是多个字符的或,注意是或。所以[\w+]等同于[a-z|A-Z|0-9|_],这里面的或仅仅有单个字符

所以a或者b或者c都能够匹配[\w+],可是abc不能够,怎样让abc能够匹配呢非常easy仅仅须要将条件外面加上+号标识多个字符就能够了。

2.转义符号

java转义非常麻烦各种\,须要细致理解

java中是没有意义的,在字符串中你出现一个,编译器会告诉你是错误的,不能这样

所以java中\表示一个。在正則表達式匹配中如匹配数字写的是\d事实上是\表示一个最后的效果是d.

这个时候有人要问了,我仅仅要匹配d这个字符而不是匹配数字怎么办。这个时候须要在加一个转义符。告诉大家这个字符不是d表示的数字,而是详细字符串d,详细的结果是非常蛋疼的在加上一个转义字符\。所以会出现\\d,java会解析成\d,表示对d在做转义,就是单纯的d。

再比方[\]这个简单的表达式,假设你去调用则会报错。为什么?

由于java会觉得你仅仅传了一个转义符。而单独的转义符是没有意义的。假设你要匹配号,须要的表达式是\\前面的\表示转义符号,后面的\表示真正匹配的号。- -!

java转义字符关键是两个\表示一个。会让人费解。须要注意。

原文地址:https://www.cnblogs.com/bhlsheji/p/5113152.html