JAVA系列---正则表达式

1. 常见元字符

编号元字符匹配功能
1.匹配除换⾏符以外的任意字符
2\w匹配字⺟或数字或下划线
3\s匹配任意的空⽩符
4\d匹配数字
5\n匹配⼀个换⾏符
6\t匹配⼀个制表符
7^匹配字符串的开始
8$匹配字符串的结尾
9\W匹配⾮字⺟或数字或下划线
10\D匹配⾮数字
11\S匹配⾮空⽩符
12ab
13()匹配括号内的表达式,也表示⼀个组
14[…]匹配字符组中的字符
15[^…]匹配除了字符组中字符的所有字符

2. 量词

编号元字符功能
1*重复零次或更多次
2+重复⼀次或更多次
3重复零次或⼀次
4{n}重复n次
5{n,}重复n次或更多次
6{n,m}重复n到m次

3. 匹配模式

编号元字符功能
1.*贪婪匹配
2.*?惰性匹配

4. 示例

  1. 贪婪与惰性
str: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏啊
reg: 玩⼉.*?游戏 (惰性匹配)
此时匹配的是: 玩⼉吃鸡游戏


reg: 玩⼉.*游戏 (贪婪匹配)
此时匹配的是: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏
  1. 匹配数字
@Test
void test01(){
    String str = "  hello   Java 123 ,456 ";
    System.out.println(str.replaceAll("\\d+","9"));
}


/*
执行结果
  hello   Java 9 ,9
 */


其中 \d 意思是匹配 数字, 因为在java中 \ 有特殊含义,因此需要再加一个斜杠 写成 \\d
其中 + 的意思 是 重复一次或更多次,也就是多次匹配
因此 其中的数字都被替换。
  1. 对于一串字符串 判断它是否是字母+数字+字母的格式
@Test
void test02(){
    String str1 = "a1b";
    String str2 = "1a1";
    System.out.println(str1.matches("[a-zA-Z]\\d[a-zA-Z]"));
    System.out.println(str2.matches("[a-zA-Z]\\d[a-zA-Z]"));
}
/*
执行结果
true
false
*/

  1. 对于一串字符串 判断它是否以 非数字开头 ,以字母结尾
@Test
void test03(){
    String regex = "^\\D.*[a-zA-Z]$";
    System.out.println("12dads45".matches(regex));
    System.out.println("dsadsguakgdk12".matches(regex));
    System.out.println("12dbsjka".matches(regex));
    System.out.println("..dd456sds".matches(regex));
}
/*
执行结果
false
false
false
true
*/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lipviolet

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

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

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

打赏作者

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

抵扣说明:

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

余额充值