正则表达式支持的常用字符
| 字符 | 解释 |
|---|
| 任意合法字符 | 任意合法字符,如abc_#等 |
| \u0061 | 匹配对应的Unicode字符a |
| \t | 匹配制表符 |
| \n | 匹配换行符 |
| \r | 匹配回车符 |
| \f | 匹配换页符 |
1 2 3 4 5 6 7 8
| public static void main(String[] args) { System.out.println("test".matches("test")); System.out.println("a".matches("\u0061")); System.out.println("\t".matches("\t")); System.out.println("\n".matches("\n")); System.out.println("\r".matches("\r")); System.out.println("\f".matches("\f")); }
|
正则表达式中的特殊字符
| 字符 | 解释 |
|---|
| $ | 匹配字符串结尾的字符 |
| ^ | 匹配字符串开头的字符 |
| () | 将括号中的表达式作为一个整体匹配 |
| [] | 中括号中的表达式匹配单个字符 |
| {} | 标记前面的表达式的出现频度 |
| * | 表示前面的表达式不出现或者出现多次 |
| + | 表示前面的表达式出现一次以上 |
| ? | 表示前面的表达式不出现或者出现一次 |
| . | 匹配除换行符\n之外的任意一个字符 |
| \ | 用于转义下一个字符,或指定16进制字符、八进制字符 |
| | | 表示或运算 |
注意:在java中,无论是String.matches()、Matcher.matches()或者是Pattern.matches()中,^和$都不能部分匹配,因为它们会将整个输入字符串与正则表达式进行匹配,所以正则表达式必须匹配整个输入字符串,replaceAll()和Matcher.find()可以进行部分匹配
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public static void main(String[] args) { System.out.println("1234".replaceAll("^12", "34")); System.out.println("1234".replaceAll("34$", "12")); System.out.println("123".matches("(123)")); System.out.println("3".matches("[123]")); System.out.println("121212".matches("(12){3}")); System.out.println("123123123".matches("(123){2,}")); System.out.println("123123123".matches("(123){2,3}")); System.out.println("13".matches("12*3")); System.out.println("123".matches("12*3")); System.out.println("1222223".matches("12*3")); System.out.println("123".matches("12+3")); System.out.println("1222223".matches("12+3")); System.out.println("123".matches("12?3")); System.out.println("13".matches("12?3")); System.out.println("123456".matches(".{6}")); System.out.println("\\"); System.out.println("123".matches("(123)|(456)")); System.out.println("456".matches("(123)|(456)")); }
|
预定义字符
| 字符 | 解释 |
|---|
| . | 可以匹配任何字符 |
| \d | 匹配数字0-9 |
| \D | 匹配除数字0-9以外的字符 |
| \s | 匹配所有空白字符,包括空格、制表符、回车符、换页符、换行符等 |
| \S | 匹配所有非空白字符 |
| \w | 匹配所有单词字符,包括0-9、26个英文字母和下划线_ |
| \W | 匹配所有非单词字符 |
方括号表达式
| 表达式 | 解释 |
|---|
| 表示枚举 | [abc]表示匹配a、b、c其中的一个字符 |
| 表示范围 | [a-z]表示匹配a-z范围内的一个字符,[\u0001-\u0006]则表示匹配这个范围内的十六进制Unicode字符,范围可以配合枚举使用,如[a-dm-p]表示匹配范围a-z或者m-p中的字符 |
| 表示求否 | [^abc]表示除a、b、c以外的其他字符 |
| 表示与运算 | [a-z&&[^ach]]表示a-z范围内,除a、c、h外的其他字符 |
| 表示并运算 | 与枚举类似,[a-d[m-p]]表示[a-dm-p] |
| 表示或运算 | [a-d|m-p]表示[a-dm-p] |