前言:
在正则表达式中,[]
()
{}
区分各自的使用场景
1、方括号 [ ]
[]
定义匹配的某一个字符范围
String str = "abcdefghijk"; //源字符串
模式:[a-c] //表示字符范围是a、b、c中任意一个字符
String newstr = str.replaceAll("[a-c]", "");
System.out.println(newstr);
输出:defghijkl
模式:[a-c[f-i]] //表示字符范围是a~c或f~i的字符(并集运算)
String newstr = str.replaceAll("[a-c]", "");
输出: dejkl
模式:[a-g&&[c-i]] //表示字符范围是a~g和c~i共有的字符(交集运算)
String newstr = str.replaceAll("[a-g&&[c-i]]", ""); //即替换c、d、e、f、g、h、i
输出: abhijkl
模式:[^cfghi] //表示字符范围是^除了cfg的任意字符
String newstr = str.replaceAll("[^cfghi]", ""); //即替换a、b、d、e、j、k
输出: cfghi
2、花括号 { }
{}
定义字符出现的次数
模式:a? //表示字符中出现'a' 0次或1次
System.out.println(Pattern.matches("a?", "aa"));
输出: false
模式:a* //表示字符中出现'a' 0次或n次
System.out.println(Pattern.matches("a*", "aaa"));
输出: true
模式:a+ //表示字符中出现'a' 1次或n次
System.out.println(Pattern.matches("a+", ""));
输出: false
模式:a{n} //表示字符中正好出现'a' n次
System.out.println(Pattern.matches("a{3}", "aaa"));
输出: true
模式:a{n,} //表示字符中至少出现'a' n次 包含n
System.out.println(Pattern.matches("a{3,}", "aa"));
输出: false
模式:a{n,m} //表示字符中出现'a' n-m次
System.out.println(Pattern.matches("a{3,5}", "aaaaa"));
输出: true
3、圆括号 ( )
()
为了提取匹配字符串的,括号内的当做一组来处理。
模式:(a|b|c) //表示字符为a或者b或者c
System.out.println(Pattern.matches("(com|net|cn)", "com"));
输出: true
网友评论