正在加载图片...
由于程序用到了随机数,因此输出的结果会一次和一次不一样,所以 expect()就不能再像过去那样,一字不错地告诉你会输出些什么了。要 解决这个问题, expect()语句就得用到一种 Java JDK1.4所引入 的,被称为正则表达式的新的特性(但是在Per和 Python之类的语言 里,这已经是老特性了)。尽管我们要到第12章才会全面介绍这一无比 强大的工具,但如果这里不作介绍的话,你就没法看下去了。目前,你只 要能读懂 expect()就行了,要想全面了解这部分内容,请查阅JDK文 档的 javautil. regex. Pattern部分。 正则表达式是一种用通用术语描述字符串的方法,这样你就可以说:“如 果字符串里有这些东西,那么它同我正在找的东西相匹配。”比如,要表 示一个可能有也可能没有的负号,你可以在负号后面加一个问号,就像这 表示整数,就是表示一个或多个阿拉伯数字。在正则表达式中,阿拉伯数 字用“d’表示的,但是在Java的 String里,你必须再加一个反斜杠 才能把它“转义”成一个反斜杠:“\\d’。要在正则表达式里表示“ 个或多个前述的表达式”,你就得用“+’。所以要表示“前面可能有个 减号,后边跟着一串阿拉伯数字”,你得写: ?\\d+ 这就是上面那段程序的 expect()语句的第一行。 expect()语句的各行中,开头部分的‘%%’(注意一下,空格是为 增强可读性而加的),都不属于正则表达式。这是 simpletext所使用的 标记,它表示这行剩下来的部分是一个正则表达式。所以仅从 simpletext的 expect()语句,你是看不到普通的正则表达式的。 其它字符,只要它不属于正则表达式特有的专用字符,都要求完全匹配。 所以第一行: 各号j=-21\d+ =’会做精确匹配。但是在第三行,“j+k’里面的‘+’必须进行 转义,因为跟‘*’一样,在正则表达式里它也是一个特殊字符。作完这 些介绍之后,剩下几行你就应该能看懂了。如果本书后面的 expect() 里面又用到了正则表达式的新特性的话,我们会再作解释。 第8页共48页shhgs@wgqqh.com ￾ 8 ✁ ✂ 48 ✁ `)âˆg,¸ê" æò©!(Oź3¨3¨X3¦ DE expect( )X;Á}^+Y¦ 3†Xîr#¡º©!ÌïZ,% £N ×cd expect( )ƒŒ‰ˆg3† Java JD K 1. 4 Džt ( TU™shi´(K(pð(F Perl Pyth on ue(ƒ Ë ôõñpð, )BòW%g 12 ûÙºc¶ 3Ü8 óÂ(yÄ ÄÅ ËX1(› ¡œ<+,A ¡ó %;= expect( ), %|c¶,£ R ôõ JD K … ²( java. u til .regex. Pattern  shi´3†ˆˆ±ƒö† ÷(µ ¦¡ÝE$0ÍÄ Å† ÷Ëm Ìøù YZA‡Fú(øù>ûÏ8Ä %h ›3×Ý;m[Ý;œm(¿S ¡ÝEF¿S¶ä3×cS } ¦0 -? h›¤" h›3ׅV×üýþ"†Fshi´* üýþ" †ˆ[\d\h›( F Java ( Strin g Ë ¡‡ˆÁä3× Ù;PAÍäώ3×0[\\d\%Fshi´Ëh›Í3 ׅV×(hi´Ï ¡‰ˆ[+\DE%h›Í¶Ý;m× PS 1.3÷üýþ"†Ï ¡‰«0 -?\\d+ J¶Yâ( expect( )ƒŒ(3 expect( )ƒŒ(* a([%%\(¹3 ‰è™, óÝðàä() ÆX )shi´  simpletest Dçˆ( Y Ah›  Q(3×shi´DE simpletest ( expect( )ƒŒ ¡<XgM(shi´( §A† ó%AX )shi´pm(Ÿˆ† Æ% cû DE30 %% j = -?\\d+ [j = \ºTxûFL [j + k\˶([+\‡ˆ( ä æ™[*\3¦ Fshi´ËA[3×pq† 1 Ìu i¡vw;<=,ÄÅ ¶( expect( ) ˶üˆg,shi´(Kpð(› WºÁ1£
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有