正则表达式
- 普通字符
普通字符就是利用数字、大小写字母、下滑线等作为原子使用
Pattern p = Pattern.compile("noble");
Matcher m = p.matcher("java is learned by noble");
System.out.println(m.find());//true
2.非打印字符
常用的:
\d 匹配一个数字字符。等价于[0-9]
\D 匹配一个非数字字符。等价于[^0-9]
\n 匹配一个换行符。等价于\x0a和\cJ
\r 匹配一个回车符。等价于\x0d和\cM
\s 匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
\t 匹配一个制表符。等价于\x09和\cI
\w 匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”
Pattern p = Pattern.compile("\\d");
Matcher m = p.matcher("java 424is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());//4
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("java 424is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());//424
Pattern p = Pattern.compile("\\W");
Matcher m = p.matcher("java 424is learned by noble");
System.out.println(m.find());//true
System.out.println(m.start());//4
Pattern p = Pattern.compile("[a-z1-9]");
Matcher m = p.matcher("java 424is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());//j
Pattern p = Pattern.compile("[a-zA-Z]{3,5}");
Matcher m = p.matcher("javAJAva 424is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());//javAJ
3.元字符
字符 | 描述 |
---|---|
$ | 匹配输入字符的结尾位置 |
() | 标记一个子表达式的开始和结束位置 |
* | 匹配前面的子表达式0或多次 |
+ | 匹配前面的子表达式1或多次 |
. | 匹配出\之外的任何单字符 |
[] | 标记一个单字符的范围 |
{} | 标记限定表达式的开始 |
|将下一个字符标记为特殊字符 | |
^ | 匹配输入字符串的开始位置。在中括号中使用表达否 |
字符 | 描述 |
---|---|
? | 匹配前面的子表达式0次或一次 |
{n}匹配前面的子表达式n次 | |
{n,} | 至少匹配前面的子表达式n次 |
{n,m} | 匹配前面的子表达式最少n次最多m次 |
Pattern p = Pattern.compile("^JAva");
Matcher m = p.matcher("javAJAva 424is learned by noble");
System.out.println(m.find());//false
Pattern p = Pattern.compile("^javA");
Matcher m = p.matcher("javAJAva 424is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());//javA
Pattern p = Pattern.compile("noble$");
Matcher m = p.matcher("javAJAva 424is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());
Pattern p = Pattern.compile("by$");
Matcher m = p.matcher("javAJAva 424is learned by noble");
System.out.println(m.find());//false
Pattern p = Pattern.compile("42(4)?");
Matcher m = p.matcher("javAJAva 42444is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());//424
Pattern p = Pattern.compile("42(4){2,4}is");
Matcher m = p.matcher("javAJAva 42444is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());
Pattern p = Pattern.compile("l.*?n");
Matcher m = p.matcher("javAJAva 42444is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());//learn
Pattern p = Pattern.compile("l.*n");
Matcher m = p.matcher("javAJAva 42444is learned by noble");
System.out.println(m.find());//true
System.out.println(m.group());//learned by n
Java 正则表达式的使用
(Pattern and martcher):
https://blog.csdn.net/hahaha237/article/details/108106915