【已解决】正则表达式结果与正确答案不一致,为什么??

【已解决】正则表达式结果与正确答案不一致,为什么??

今天正在学习正则表达式的使用,遇到了几个问题。
也不知是书的问题还是什么问题,我在网上查到也是那么写的啊。
我用的是apache2.2.4和php5.2.4。
谢谢各位指导了。

1. 定义包含0或1个字符规则的问题
     

<?php
echo ereg("a?", "a");         //true
?>
<?php
echo ereg("a?", "bb"); //true
?>
上面没问题啊,可到了下一个
<?php
echo ereg("a?", "aa");    //false
?>

应该是false的,可我的还是显示1,也就是true了。?????


2. 定义包含某范围的词规则问题

<?php
echo ereg("^(wang|zhang)+$", "wang and zhang");       //true
?>

应该是true的,可我的没有显示,也就是false了,我去掉了^后就是true了。?????

总结一下:是课本错了。。。希望初学者找一本好点的书或资料。。。千万不要像我似的,被错误的东西误导了!!!

[ 本帖最后由 honeyxiaoyi 于 2007-10-6 20:13 编辑 ]

true是不显示出来的.可以用 var_dump() 把变量的类型和值打印出来
var_dump(ereg("^(wang|zhang)+$", "wang and zhang"));
如履薄冰

这个我知道啊。。true就是显示1吗。。。false什么都不显示的。。这个我是清楚的。。。请版主再仔细看一下。。。麻烦了啊。。谢谢!!!

?问号是0个或1个,
<?php
echo ereg("a?", "aa");    //false
?>
这个当然是true

^表示开始,$表示结尾
<?php
echo ereg("^(wang|zhang)+$", "wang and zhang");       //true
?>
这个当然是false
如履薄冰

那么我想再问问正则表达式中的a*和a?有什么区别???还是一样的呢???
a*是0到n个,a?是0或1个,那怎么
<?php
echo ereg("a?", "aa");
?>
里面a有两个吗,也是true啊,那它跟a*还有什么区别啊????

<?php
echo ereg("^(wang|zhang)+$", "wang and zhang");       //false
?>这个我又试了一下,才明白原来是要么以wang开头结尾,要么以zhang开头结尾,不能以wang开头zhang结尾,
晕死了,我用的人民邮电出版社的《精通PHP+MySQL应用开发》这本书,郁闷死了,讲正则表达式这一块有很多的错误,
简直是误人子弟啊!!!

[ 本帖最后由 honeyxiaoyi 于 2007-10-5 17:38 编辑 ]

不用了哈!!谢谢版主讲解了。。。我现在搞定了。。可不再看那本误人子弟的书了。。。。

[ 本帖最后由 honeyxiaoyi 于 2007-10-6 08:07 编辑 ]