正则表达式
字符集合
正则表达式 | 说明 |
---|---|
^ | 行的开头 |
$ | 行的结尾 |
[abc] | a、b、c中任意⼀个字符 |
[^abc] | 除了a、b、c的任意字符 |
[a-z] | a、b、c、… … 、z中的任意⼀个字符 |
[a-zA-Z0-9] | az、AZ、0~9中任意⼀个字符 |
[a-z&&[^bc]] | a~z中除了b和c以外的任意⼀个字符,其中"&&"表示“与”的关系 |
. | 任意⼀个字符 |
\d | 任意⼀个数字字符,相当于 [0-9] |
\D | 非数字字符,相当于[^0-9] |
\w | 单词字符,相当于 [a-zA-Z_0-9] |
\s | 空⽩字符,相当于 [\t\n\x0B\f\r] |
转义字符
正则表达式 | 说明 |
---|---|
\. | . |
\* | * |
\+ | + |
\- | - |
Pattern.matches(regex, str) // 生成的regex是否与输入的匹配
//[a-zA-z0-9] 里面的字符至少出现3次,不超过5次
String str = "[a-zA-z0-9]{3,5}";
System.out.println(Pattern.matches(str, "12we"));
//true
String str1 = "[a-z]"; //生成a~z的一个字符
System.out.println(Pattern.matches(str1,"t"));//true
System.out.println(Pattern.matches(str1,"1"));//false
// ^[a-z]必须以字母开始{5,17} 出现5~17位
String str2="^[a-z][a-zA-z0-9]{5,17}";
System.out.println(Pattern.matches
(str2,"q12334"));//true
System.out.println(Pattern.matches
(str2,"112334"));//false
//^1[0-9]{10} 必须1开头,后面0-9随机10位
String str3="^1[0-9]{10}";
System.out.println(Pattern.matches
(str3,"18205700493"));
Greedy 数量词
正则表达式 | 说明 |
---|---|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
// \w 单词字符:[a-zA-Z_0-9] a-zA-z0-9加一个_ 下划线
// [a-zA-z]\\w{5,17}@qq\\.com 第一个字符a-z中取一个
// \\w{5,17} a-zA-z0-9加一个_ 下划线 出现5~17个
String email="z1d_12_97405643@qq.com";
String matches="[a-zA-z]\\w{5,17}@qq\\.com";
System.out.println(Pattern.matches(matches,email));
//true
String matches1="\\w{5,12}@qq\\.com";
System.out.println(Pattern.matches(matches1,email));
//z1d_12_97405643@qq.com 的z1d_12_97405643长度>17 false
/*替换
* public String replaceAll(String regex,
* String replacement)
参数
regex -- 匹配此字符串的正则表达式。
newChar -- 用来替换每个匹配项的字符串。*/
String str4="哈哈哈草,啊操,呵呵艹";
String str5="(草)|(操)|(艹)";
String str6=str4.replaceAll(str5,"***");
System.out.println(str6);
//哈哈哈***,啊***,呵呵***
/*切割 spilt()
\d 数字:[0-9]
\\d+ [0-9]出现一次或者多次*/
String str7="String123Array45object789";
String regex="\\d+";
String[] split= str7.split(regex);
//String123Array45object789 以数字为分割
System.out.println(Arrays.toString(split));
//[String, Array, object]