正则表达式(regular expression)

本文介绍了如何在Java中使用正则表达式来处理随机数生成的输出,包括基本语法如描述数字、符号等,并解释了一元加减操作符的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于上面的例子程序使用随机数生成输出,且每一次的输出都与下一次输出不同,所以
expect() 函数无法知道确切的输出。要解决这个问题,可以在 expect()中使用正则表
达式。这是 Java JDK 1.4 中引入的新特性(但在 Perl 和 Python 中早就有了)。虽然
要到第十二章我们才用到了这个非常强大的工具,但是现在我们还是需要学习一些正则表达
式的知识,以便理解这些语句。这里我们只需要读懂 expect()语句,如果你想全面地了解
正则表达式,可以参考 JDK 文档中的 java.util.regex.Pattern。


正则表达式是使用通用术语(general terms)来描述字符串的一种方法。你可以说:“如果
一个字符串包含这些东西,那么它与我要找的东西相匹配。”例如,要表达一个数可能有,
也可能没有负号,你可以在负号后面跟一个问号,就像下面这样:




-?




要表示一个整数,你可以描述其具有一位或多位数字。在正则表达式中,一个数位用’\d’
表示,但在 Java 的字符串类型中,我们必须添加一个反斜线才能“转义”表达出反斜
线:’\\d’。在正则表达式中要说明有“一个或多个前述的表达式”,就要使用’+’。所以
要表达“可能有负号,后面有一个或多个数位”,我们要这样写:




-?\\d+




这就是前面代码 expect()语句中的第一行。


在 expect()方法中的各行的开头部分,’%%’不是正则表达式的语法(注意,包含空格是
为了可读性),而是一个标记,simpletest 使用它来表示这一行余下的部分是一个正则表
达式。所以在标准的正则表达式中是不会看到它的,它只在 simpletest 的 expect()语
句中出现。


对于其他的字符,只要不是正则表达式专有的特殊字符,都要求精确匹配。所以在第一行代
码中:




%% j = -?\\d+




‘j=’需要准确匹配。但是,在第三行中,’j+k’中的’+’需要转义,因为它是正则表达式
的特殊字符,同样的还有’*’。通过前面的介绍,这一行余下的代码你应该能理解了。在后
 






面,expect()还会使用到正则表达式其他的特性,到时候我们再解释。






一元加、减操作符


一元减号(-)和一元加号(+)与二元加号和减号都是相同的符号。根据表达式的书写形式,
编译器会自动判断出使用的是哪一种。例如下述语句:




x = -a;




它的含义是显然的。编译器能正确识别下述语句:




x = a * -b;




但读者会被搞糊涂,所以最好更明确地写成:




x = a * (-b);




一元减号用于转变数据的符号,而一元加号只是为了与一元减号相对应,它实际并不做任何

事情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值