详解Java正则表达式

1 什么是正则表达式

  1. 正则表达式(regular(有规律的) expression(表达式)),简写为regex;
  2. 正则表达式是一个字符串;
  3. 正则表达式定义匹配规则,用来匹配一系列符合这个规则的字符串;
  4. 在开发中,正则表达式通常被用来检索、替换那些符合某种规则的文本,或者从字符串中提取我们想要的特定部分;
  5. 正则表达式是一套标准,可以用于任何语言;
  6. JDK内置正则表达式引擎:java.util.regex

2 正则表达式匹配规则

正则表达式规则可以匹配
^开头字符串开头(在Java中可有可无)
$结尾字符串结束(在Java中可有可无)
A指定字符A
\u548c指定Unicode字符
.任意字符a, b. &, 0
\d0-90,1,2,3,…,9
\wa-z, A-Z, 0-9, _a, A, 0, _,…
\s空格、Tab键“ ”
\D非\da, A, &, _, …
\W非\w&, @, 中, …
\S非\sa, A, &, _, …
[ABC][…]内任意字符A, B, C
[A-F0-9xy]指定范围的字符A, …, F, 0,…, 9, x, y
[^A-F]指定范围外的任意字符非A, …, F
AB|CDAB或CDAB, CD
AB|CD|EFGAB或CD或EFGAB, CD, EFG
AB*至少0个字符A, AB, ABB, ABBB, …
AB+至少1个字符AB, ABB, ABBB, …
AB?0或1个字符A, AB
AB{3}指定个数字符ABBB
AB{1, 3}指定范围个数字符AB, ABB, ABBB
AB{2, }至少n个字符ABB, ABBB,…

3 Java中涉及正则表达式的常用方法

3.1 判断是否匹配字符串(boolean):String.matches(String regex)

举例:校验qq号码.
	1: 要求必须是5-15位数字
	2: 0不能开头
代码演示:
	String qq = "604154942";
	String regex = "[1-9][0-9]{4,14}";
	boolean flag = qq.matches(regex);
	System.out.println(flag);

true

3.2 拆分字符串(String[]):String.split(String regex)

1

String s = "1h-22-40-65";
String regex = "-";
String[] result = s.split(regex);
System.out.println(Arrays.toString(result));

[1h, 22, 40, 65]

2

String s = "1h 22 40 65";
String regex = " ";
String[] result = s.split(regex);
System.out.println(Arrays.toString(result));

[1h, 22, 40, 65]

3

String s = "1h  22 40 65";
String regex = "\\s";
String[] result = s.split(regex);
System.out.println(Arrays.toString(result));

[1h, , 22, 40, 65]

4

String s = "1h  22 40 65";
String regex = "\\s+";
String[] result = s.split(regex);
System.out.println(Arrays.toString(result));

[1h, 22, 40, 65]

5

String s = "1h, 22;;40 65";
String regex = "[,;\\s]+";
String[] result = s.split(regex);
System.out.println(Arrays.toString(result));

[1h, 22, 40, 65]

3.3 替换字符串(String):String.replaceAll(String regex, String replacement)

String s = "Hello12345World6789012";
String regex = "[0-9]";
String result = s.replaceAll(regex, "*");
System.out.println(result);

Hello*****World*******
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellosc01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值