概述
是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
其实就是一种规则。
组成规则
规则字符在java.util.regex Pattern类中:Pattern API
常见组成规则
1. 字符
元字符 |
说明 |
x |
字符 x |
\ |
反斜线字符 |
\n |
新行(换行)符 (‘\u000A’) |
\r |
回车符 (‘\u000D’) |
2. 字符类
元字符 |
说明 |
[abc] |
a、b 或 c(简单类) |
[^abc] |
任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] |
a到 z 或 A到 Z,两头的字母包括在内(范围) |
[0-9] |
0到9的字符都包括 |
3. 预定义字符类
元字符 |
说明 |
. |
任何字符 |
\d |
数字。等价于[0-9] |
\w |
单词字符。等待雨[a-zA-Z_0-9] |
4. 边界匹配器
元字符 |
说明 |
^ |
行的开头 |
$ |
行的结尾 |
\b |
单词边界 |
5. 数量词
元字符 |
说明 |
X? |
X,零次或一次 |
X* |
X,零次或多次 |
X+ |
X,一次或多次 |
X{n} |
X,恰好 n 次 |
X{n,} |
X,至少 n 次 |
X{n,m} |
X,至少 n 次,但是不超过 m 次 |
应用
判断功能
String 类 matches 方法
1
| public boolean matches(String regex)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入你的手机号码:"); String phone = sc.nextLine();
String regex = "1[38]\\d{9}";
boolean flag = phone.matches(regex);
System.out.println("flag:"+flag); }
|
分割功能
String类的 split 方法
1
| public String[] split(String regex)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public static void main(String[] args) { String ages = "18-24";
String regex = "-";
String[] strArray = ages.split(regex); int startAge = Integer.parseInt(strArray[0]); int endAge = Integer.parseInt(strArray[1]); }
|
替换功能
String 类的 replaceAll 方法
1
| public String replaceAll(String regex,String replacement)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public static void main(String[] args) { String s = "helloqq12345worldkh622112345678java";
String regex = "\\d+"; String ss = "";
String result = s.replaceAll(regex, ss); System.out.println(result); }
|
获取功能
Pattern和Matcher类的使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public static void main(String[] args) { Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); System.out.println(b);
String s = "aaaaab"; String regex = "a*b"; boolean bb = s.matches(regex); System.out.println(bb); }
|