Java正则表达式

xiaoxiao2021-02-28  20

先说些常规字符代表的含义

. // 1字符,一定是一个,多一个少一个都不行 ? // 0个或一个 * // 0个或多个 + // 1个或多个

中括号用途:[]

某个区间内所有字符 如 [a-zA-Z0-9]某几个的范围所有字符 [abcd]取非的所有字符[^a]

在中括号中的字符不再有特殊的含义,匹配全部的 .和*  [.][*]

转义的使用

首先要明白的是如果正则表达式是在字符串里,那么使用转义的话,先是编程语言解转义,然后是正则引擎解转义,所以你需要小心,如:Stirng regString = "\\.";表示的是匹配原生点号,第一个反斜杠被编程语言解析到的时候,被认为是转义标记,有效串变为\.,\.被正则引擎解释 ,遇到反斜杠,认为和后面的点构成转义,得到原生意义的点。

非的使用

在和中括号搭配使用时,[^a]表示非a的任意字符,那[^abc]呢?事实上,他表示的是任意非a,非b,非c的字符,这里的非有承前省的语义,使用时注意。[^.\/]表达的含义呢?他是要匹配任意非点和非正斜杠的字符。

断言的使用

零宽度正先行断言,匹配exp表达式前面的内容,如regString="a(?=\\/)",目标串"a/",中a就被匹配上,注意断言表达式不参与匹配。

在Java中使用:

Pattern pattern = Pattern.compile("http://|https://"); Matcher matcher = pattern.matcher("http://"); if (matcher.find()){ System.out.println(matcher.group()); }

这里需要注意的是一定要先find(),如果直接调用group(),那么会有java.lang.IllegalStateException: No match found的异常抛出,因为find()中会有必要的匹配行为,不能缺少。

转载请注明原文地址: https://www.6miu.com/read-2300372.html

最新回复(0)