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可以匹配呢很简单只需要将条件外面加上+号标识多个字符就可以了。
2.转义符号
java转义很麻烦各种\\,需要仔细理解
java中\是没有意义的,在字符串中你出现一个\,编译器会告诉你是错误的,不能这样
所以java中\\表示一个\。在正则表达式匹配中如匹配数字写的是\\d其实是\\表示一个\最后的效果是\d.
这个时候有人要问了,我只要匹配\d这个字符而不是匹配数字怎么办,这个时候需要在加一个转义符,告诉大家这个字符不是\d表示的数字,而是具体字符串\d,具体的结果是很蛋疼的在加上一个转义字符\\,所以会出现\\\\d,java会解析成\\d,表示对\d在做转义,就是单纯的\d。
再比如[\\]这个简单的表达式,如果你去调用则会报错,为什么?
因为java会认为你只传了一个转义符,而单独的转义符是没有意义的,如果你要匹配\号,需要的表达式是\\\\前面的\\表示转义符号,后面的\\表示真正匹配的\号。- -!
java转义字符关键是两个\\表示一个\,会让人费解,需要注意。