正则表达式(regular expression)
来源:互联网 发布:淘宝css颜色代码 编辑:程序博客网 时间:2024/05/23 19:13
由于上面的例子程序使用随机数生成输出,且每一次的输出都与下一次输出不同,所以
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);
一元减号用于转变数据的符号,而一元加号只是为了与一元减号相对应,它实际并不做任何
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);
一元减号用于转变数据的符号,而一元加号只是为了与一元减号相对应,它实际并不做任何
事情。
- 正则表达式(regular expression)
- !!!正则表达式 (Regular Expression)
- 正则表达式(regular expression)
- 正则表达式(Regular Expression)
- 正则表达式(Regular Expression)
- 正则表达式(Regular Expression)
- 正则表达式(regular expression)
- 正则表达式(regular expression)
- 正则表达式(Regular Expression)
- 正则表达式(regular expression)
- 正则表达式 regular-expression
- 正则表达式(regular expression)
- 正则表达式(regular expression)
- 正则表达式(regular expression)
- 正则表达式(regular expression)
- 正则表达式(regular expression)
- 正则表达式(regular expression)
- 正则表达式(regular expression)
- 算术操作符(Mathematical operator)
- 解决java中显示单引号和双引号的问题
- JSP分页,使用Hibernate+mysql
- SQL中游标的使用
- 笔记:DIV高度自适应
- 正则表达式(regular expression)
- VS2010中内联汇编入门--cdecl
- python处理中文字符
- JS 实现文件夹目录选择
- Java File 方法详细介绍
- sql 查询一个表信息 条件为该表一个字段大于对应(必须该表相对应的Id)另外一个表的总数
- 关系操作符(relational operator)
- (ios)UIImage,CGImage和CGImageRef之间的转化
- 全志a31 支持电容屏触摸方法