Java基础学习笔记——正则表达式

正则表达式

1. 例子1——字符串匹配

使用String类的matches()方法

需求

  1. 要求code为5~10位数
  2. 要求code全部为数字
  3. 要求code不能以0开头

代码

		String regex="[1-9][0-9]{4,9}";
		String code1="1233424";
		String code2="1233424d";
		String code3="01233424";
		String code4="12334244323";
		System.out.println(code1.matches(regex));
		System.out.println(code2.matches(regex));
		System.out.println(code3.matches(regex));
		System.out.println(code4.matches(regex));

2. 例子2——字符串切割

使用String类的split()方法

需求1

将不同空格数量间隔的字符串分割

代码1

String str="xiaoqiang     xiaoming dawang     xiaohong";
String regex=" +";

需求2

将出现的重复2到多次的字母作为分隔符分割

代码2

String str="xiaomingttttttxiaohongggggxiaozhangzzzxiaochao";
String regex="(.)\\1+";
  1. 这里是将字符串中的tttttt、ggggg、zzz作为分割符号进行分割。
  2. 这里用到了组的概念,用()括起来的内部东西就视作一个组,从1开始编号,使用\1这样1的转义来表示1组所匹配到的字符串。
  3. 对于正则表达式的转义一般都是加\,这样是为了不和字符串本身的转义冲突
  4. 上述匹配工作原理是,第一个字符匹配了x,之后再用组1引用这个x,发现再次出现次数不是1次或者1次以上,于是重新匹配下一个i,发现也不是,就继续匹配,一直匹配到了t,发现满足,于是分割。以此类推。

3. 例子3——字符串替换

使用String类的replaceAll()方法

需求

将电话号码4~7位替换为*符号

代码

		String str="17333334464";
		String ans=str.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
  1. 这里的$符号表示从上一个参数中存取的正则表达式分组中获取元素

4. 例子4——字符串获取

使用Pattern类

需求

获取一段字符中三个字母的单词

代码

		String str="da jia hao, wo jiao lu ben wei";
		Pattern p=Pattern.compile("\\b[a-zA-Z]{3}\\b");
		Matcher match=p.matcher(str);
		while(match.find()) {
			System.out.println(match.group());
			System.out.println(match.start()+" : "+match.end());
		}

其实前面三个例子,本质上都是使用了Pattern类相关的各种方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值