目录
一、引言
1.对于字符串处理来说,正则表达式是一个强大的工具。
2.可以用正则表达式来匹配、替换。分割字符串。
3.正则表达式严格区分大小写。
二、使用格式
- 字符串名.matches(“正则表达式”)
- “字符串内容”.matches(“正则表达式”)
如果匹配则返回值为true,不匹配则返回false.
三、正则表达式语法
正则表达式 | 解释 | 样例 |
x | 指定的字符x | “java”.matches(”java”) |
. | 任意的单个字符 | “java”.matches(“j..a”) |
(ab|cd) | ab或者cd | “java”.matches(“ja(va|vb)”) |
[abc] | a或者b或者c | “java”.matches(“jav[abc]”) |
[^abc] | 除开abc的任意字符 | “java”.mathces(“ja[^ars]a”) |
[a-z] | a到z | “java”.matches(“jav[a-z]”) |
[^a-z] | 除开a到z的任意字符 | “java”.matches(“jav[^b-d]”) |
[a-e[m-p]] | a到e或者m到p | “java”.matches(“A-G[I-M]av[a-d]”) |
[a-e&&[c-p]] | a到e与c到p的交集 | “java”.matches(“[A-p&&[I-M]]av[a-d]”) |
\d | 个位数0-9 | “java2”.matches(“java[\\d]”) |
\D | 一位非数字 | “$java”.matches(“[//D][//D]ava”) |
\w | 单词字符 | “java1”.mathces(“[\\w]ava[\\w]”) |
\W | 非单词字符 | “$java”.matches(“[\\W][\\w]ava”) |
\s | 空白字符 | “java 2”.matches(“java[\s]2”) |
\S | 非空白字符 | “java”.matches(“[\\S]ava”) |
p* | 模式p的0次或者多次出现 | “paaaa”.mathces(“pa*”) “p”.matches(“pa*”) |
p+ | 模式p的1次或者多次出现 | “pa”.matches(“pa+”) “paaaaa”.mathces(“pa+”) |
p? | 模式p的0次或者1次出现 | “p”.matches(“pa?”) “pa”.matches(“pa?”) |
p{n} | 模式p正好n次出现 | “paaaa”.matches(“pa{4}”) |
p{n,} | 模式p至少n次出现 | “paaaaaa”.matches(“pa{2,}”) “paaaaa”.matches(“pa{1,}”) |
p{n,m} | 模式p的出现次数在n到m之间不包含 | “aaaa”.mathces(“a{1,9}”) |
//x
System.out.println("java".matches("java"));//输出true
//.
System.out.println("java".matches("j..a"));//输出true
//(ab|cd)
System.out.println("java".matches("ja(va|vd)"));//输出true
//[abc]
System.out.println("java".matches("jav[abc]"));//输出true
//[^abc]
System.out.println("java".matches("jav[^bcd]"));//输出 true
//[a-z]
System.out.println("java".matches("jav[a-z]"));//输出true
//[^a-z]
System.out.println("java".matches("jav[^b-z]"));//输出true
//[a-e[m-p]]
System.out.println("java".matches("jav[a-e[m-p]]"));//输出true
//[a-e&&[c-p]]
System.out.println("java".matches("jav[a-e&&[m-p]]"));//输出false
// \d
System.out.println("java2".matches("jav[a-e][\\d]"));//输出true
// \D
System.out.println("java2".matches("jav[\\D][\\d]"));//输出true
// \w
System.out.println("java2".matches("[\\w]ava[\\w]"));//输出true
// \W
System.out.println("$java".matches("[\\W][\\w]ava"));//输出true
// \s
System.out.println("java 1".matches("java[\\s][\\d]"));//输出true
// \S
System.out.println("java&1".matches("jav[\\w][\\S][\\d]"));//输出true
// p*
System.out.println("jaaaaa".matches("ja*"));//输出true
System.out.println("j".matches("ja*"));//输出true
// p+
System.out.println("jaaaaa".matches("ja+"));//输出true
System.out.println("j".matches("ja+"));//输出false
//p?
System.out.println("ja".matches("ja?"));//输出true
System.out.println("j".matches("ja?"));//输出true
System.out.println("jaaaa".matches("ja?"));//输出false
//p{n}
System.out.println("jaaaa".matches("ja{4}"));//输出true
System.out.println("jaaaa".matches("ja{5}"));//输出false
//p{n,}
System.out.println("jaaaa".matches("ja{1,}"));//输出true
System.out.println("jaaaa".matches("ja{6,}"));//输出flase
//p{n,m}
System.out.println("jaaaa".matches("ja{1,9}"));//输出true
System.out.println("jaaaaaa".matches("ja{9,12}"));//输出false
量词符:*、+、?、{n}、{n,}
在正则表达式中,空格和其他的字符并没有什么区别。
Warning:不要在重复量词符中使用空白
例如:A{3,6}写成A{3,[]6}是错误的。
可以使用括号来分组 。
例如:”ababab”.matches(”(ab){3}”)
四、分割方法
split(regex)———“字符串内容”.split(“匹配的分割符”)
模式最多匹配limit-1次
split(regex,limit)————“字符串内容”.split(“匹配的分割符”,匹配的次数)