day10正则表达式

正则表达式

1 概述

1)正则表达式本身就是字符串
2)字符串的内容表达的是个规则规范
3)作用就是简化代码 弊端:可读性差,正确率低

2 案例

qq号码 5-11 数字 第一个数字不是0

String qq = "239823955463463456";
// 5-11 数字 第一个数字不是0
int len = qq.length();
boolean bo = true;// 是qq号码
if (len >= 5 && len <= 11) {
char[] cs = qq.toCharArray();
// 第一个数是不是1-9的数字字符
if (cs[0] >= '1' && cs[0] <= '9') {
for (int i = 1; i < cs.length; i++) {
// 判断是否是数字
if (!Character.isDigit(cs[i])) {
bo = false;
break;
}
}
} else {
bo = false;
}
} else {
bo = false;
}
if (bo) {
System.out.println("是qq号");
} else {
System.out.println("不是qq号");
}
String qq = "0252829546";
// 5-11 数字 第一个数字不是0
String regex = "[1-9][0-9]{4,10}";
// 匹配判断
boolean bo = qq.matches(regex);
System.out.println(bo);

3 正则表达式用到的符号

[] 里面可以定于多个字符,[字符]表示该位置处可以是哪个字符,代表单个字符的判断
{} 数量词,代表它前面的字符可以是几个个
() 分组

4 正则的字符类

[abc] a 、 b 或 c (简单类)
[^abc] 任何字符,除了 a 、 b 或 c (否定)
[a-zA-Z] a 到 z 或 A 到 Z ,两头的字母包括在内(范围)

String regex = "[abc]";
System.out.println("a".matches(regex));// t
System.out.println("ab".matches(regex));// f
System.out.println("2".matches(regex));// f
System.out.println("*".matches(regex));// f
String regex1 = "[^0-9]";
System.out.println("a".matches(regex1));// t
System.out.println("*".matches(regex1));// t
System.out.println(".".matches(regex1));// t

5预定义字符类

任意字符
\d 数字: [0-9]
\D 非数字: [^0-9]
\s 空白字符: [ \t\n\x0B\f\r]
\S 非空白字符: [^\s]
\w 单词字符: [a-zA-Z_0-9]
\W 非单词字符: [^\w]
\一般是成对出现的

String regex2 = "\\d";// 数字
System.out.println("2".matches(regex2));// t
System.out.println("a".matches(regex2));// f
System.out.println(" ".matches(regex2));// f
System.out.println("*".matches(regex2));// f
// .表示任意字符
System.out.println("a".matches("."));
System.out.println(" ".matches("."));
System.out.println("*".matches("."));
System.out.println(".".matches("."));
// 单独判断. [.] \\.
6 数量词
7 正则表达式能做什么
7.1 判断匹配
7.2 切割
7.3 替换
System.out.println(".".matches("[.]"));
System.out.println(".".matches("\\."));
System.out.println("a".matches("\\."));

6 数量词

X? X,一次或一次也没有 0-1
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

X{n,m} X,至少 n 次,但是不超过 m 次
System.out.println("abc".matches("[a-z]+"));
System.out.println("abc".matches("\\w+"));
System.out.println("....".matches("[.]*"));
System.out.println("....".matches("[.]{4}"));
System.out.println("....".matches("[.]{4,7}"));

7 正则表达式能做什么

7.1 判断匹配

matches(String regex) boolean
案例:用户名的判断是否输入正确 6-10位的字符,不能是数字
String regex3 = "[^0-9]{6,10}";
String username = "askgh";
boolean bo = username.matches(regex3);
System.out.println(bo);

7.2 切割

split(String regex) 切割成多个字符串
String string = "ksajdgq45465ut23ralj283oso";
// 以数字进行切割
String regex4 = "\\d+";
String[] strings = string.split(regex4);
System.out.println(Arrays.toString(strings));

7.3 替换

replaceAll(String regex,String replacement) 将字符串中满足正则的字符替换成新的字符
String string = "ksajdgq45465ut23ralj283oso";
// 以数字进行替换
String regex4 = "\\d+";
String string2 = string.replaceAll(regex4, "我");
System.out.println(string2);
// 去掉.
String string3 = "我....爱..jav.....a";
System.out.println(string3.replaceAll("\\.+", ""));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值