软件构造|正则表达式

本文介绍了如何在Java中使用正则表达式,如捕获组和预定义字符,详细解释了如何匹配和提取Employee字符串中的姓名、职位和电话号码。通过Pattern和Matcher类,展示了如何处理特殊字符串并实现数据分组。
摘要由CSDN通过智能技术生成

字符集合

普通

[a-z] 表示a到z中的某一个字符。

补集

[^abc] 除了a,b,c之外的任意一个字符。

并集

[0-3[4-5]] 表示0,1,2,3,4,5

交集

[0-4&&[4-8]] 表示4

预定义的特殊字符

在这里插入图片描述需要注意的是,在使用时,我们应该用\转义。
Pattern p = Pattern.complie("\\s")才能匹配到一个空白字符。

捕获组

使用括号,我们可以捕获组然后进行处理。

例子

在实验三中,我们需要按语法读入数据。

我们使用到的正则有(略去未匹配的情况):

Pattern split = Pattern.compile("Employee\\{(.+)\\}Period\\{(.+)\\}Roster\\{(.+)\\}");
String employees = m.group(1);
String period = m.group(2);
String roster = m.group(3);

这里我们利用Employ,Period,Roster等特殊字符串,将字符串分为了三组。

这里我们着重观察对于Employ字符串的处理情况。

Pattern patternEm = Pattern.compile("([A-Za-z]+)\\{([A-Za-z| ]+),([0-9]{3}-[0-9]{4}-[0-9]{4})\\}");
Matcher matcherEm = patternEm.matcher(employees);
while (matcherEm.find()) {
	if (matcherEm.groupCount() == 3) {
		String name = matcherEm.group(1);
		String position = matcherEm.group(2);
		String phoneNum = matcherEm.group(3);
		dutySet.addEmployee(name, position, phoneNum);
	}
}

这里我们首先匹配员工姓名[A-Za-z]+,大小写字母。
然后是职位[A-Za-z| ]+,大小写字母,空格。
然后是,
然后是电话号码[0-9]{3}-[0-9]{4}-[0-9]{4}

利用while和find,
我们循环匹配,并获取了相应的字符串。

工具

通过网站https://regex101.com/
我们能够快速地从正则表达式得出相匹配的字符串,并可以快速生成对应示例代码。
在这里插入图片描述

参考

[1] https://docs.oracle.com/javase/tutorial/essential/regex/index.html
[2] https://regex101.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值