正则表达式支持的常用字符
字符 | 解释 |
---|
任意合法字符 | 任意合法字符,如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] |