**
1. 转义字符:
**
那么这里在列上一些转义字符
\ 反斜杠
\t 间隔 (‘\u0009’)
\n 换行 (‘\u000A’)
\r 回车 (‘\u000D’)
\d 数字 等价于 [0-9]
\D 非数字 等价于 [^0-9]
\s 空白符号 [\t\n\x0B\f\r]
\S 非空白符号 [^\t\n\x0B\f\r]
\w 单独字符 [a-zA-Z_0-9]
\W 非单独字符 [^a-zA-Z_0-9]
\f 换页符
\e Escape
\b 一个单词的边界
\B 一个非单词的边界
\G 前一个匹配的结束
2. Java中常用的正则表达式:
^ 为限制开头
^java 条件限制为以 Java 为开头字符
为限制结尾java
条件限制为以 java 为结尾字符
. 条件限制除 \n 以外任意一个单独字符
java.. 条件限制为 java 后除换行外任意两个字符
加入特定限制条件「 [] 」
[a-z] 条件限制在小写 a to z 范围中一个字符
[A-Z] 条件限制在大写 A to Z 范围中一个字符
[a-zA-Z] 条件限制在小写 a to z 或大写 A to Z 范围中一个字符
[0-9] 条件限制在小写 0 to 9 范围中一个字符
[0-9a-z] 条件限制在小写 0 to 9 或 a to z 范围中一个字符
[0-9[a-z]] 条件限制在小写 0 to 9 或 a to z 范围中一个字符 ( 交集 )
[] 中加入 ^ 后加再次限制条件「 [^] 」
[^a-z] 条件限制在非小写 a to z 范围中一个字符
[^A-Z] 条件限制在非大写 A to Z 范围中一个字符
[^a-zA-Z] 条件限制在非小写 a to z 或大写 A to Z 范围中一个字符
[^0-9] 条件限制在非小写 0 to 9 范围中一个字符
[^0-9a-z] 条件限制在非小写 0 to 9 或 a to z 范围中一个字符
[^0-9[a-z]] 条件限制在非小写 0 to 9 或 a to z 范围中一个字符 ( 交集 )
在限制条件为特定字符出现 0 次以上时,可以使用「 * 」
J* 0 个以上 J
.* 0 个以上任意字符
J.*D J 与 D 之间 0 个以上任意字符
在限制条件为特定字符出现 1 次以上时,可以使用「 + 」
J+ 1 个以上 J
.+ 1 个以上任意字符
J.+D J 与 D 之间 1 个以上任意字符
在限制条件为特定字符出现有 0 或 1 次以上时,可以使用「 ? 」
JA? J 或者 JA 出现
限制为连续出现指定次数字符「 {a} 」
J{2} JJ
J{3} JJJ
文字 a 个以上,并且「 {a,} 」
J{3,} JJJ,JJJJ,JJJJJ,???(3 次以上 J 并存 )
文字个以上, b 个以下「 {a,b} 」
J{3,5} JJJ 或 JJJJ 或 JJJJJ
两者取一「 | 」
J|A J 或 A
Java|Hello Java 或 Hello
「 () 」中规定一个组合类型
比如,我查询 index 中 间的数据,可写作
3. 一些实际的编码应用
/**
* 检验QQ格式
*/
public static void checkQQ(){
String qq ="635520875";
String regex ="[1-9][0-9]{4,14}";//开头不为零
Pattern pattern =Pattern.compile(regex);//获取对象
Matcher matcher=pattern.matcher(qq);//匹配
boolean b=matcher.matches();//判断
if (b){
System.out.println("QQ:"+qq+" 格式正确");
}else{
System.out.println("QQ格式错误");
}
System.out.println("----------QQ检验完成------------------");
}
/*
*需求:
*将下列字符串转成:我要学编程
*到底用四种功能中的哪一个呢?或者哪几个呢?
*思路方式:
*1、如果只想知道该字符串是对是错,使用匹配
*2、想要将已有的字符串变成另一个字符串,替换
*3、想要按照自定的方式将字符串变成多个字符串,切割,获取规则以外的子串
*4、想要拿到符合需求的字符串子串,获取,获取符合规则的子串
**/
public static void replace(){
String str="我我我我我我...要要要要要要要要要......学学学学学学学.....编编编编编编编...程程程程........";
String regex="\\.+";
str=str.replaceAll(regex, "");//去掉点
System.out.println(str);
str=str.replaceAll("(.)\\1+", "$1");//去掉重复的字(\1代表第一个括号内的内容,&1也代表第一个括号的内容)
System.out.println(str);
}