sorry 我写错了

应该是  print "\a"  if   $str =~  /(?<!\s+)abc/ ; \s+ 是错误的,我知道了


?= 与 ?! look ahead
?<= 与 ?<!   look behind





On 2/17/09, Michael Zeng <[email protected]> wrote:
>
> thanks
>
> On 2/17/09, cnhack TNT <[email protected]> wrote:
>>
>> lookbehind  的匹配,要求为固定长度的模式,(?!=\s+) 中的 \s+ 是变长的,所以不符合要求
>> 你可以指定几个空格,比如一个空格 (?!=\s)abc,或者两个空格 (?!=\s\s)abc ,依次类推
>> 请参看
>> http://perldoc.perl.org/perlretut.html#Looking-ahead-and-looking-behind
>>
>>
>> 2009/2/17 Michael Zeng <[email protected]>
>>
>>>    匹配前面不是空格的 abc
>>>
>>> my $str = "     abc" ;
>>> print "\a"  if   $str =~  /(?!=\s+)abc/ ;
>>>
>>> 怎么会匹配成功呢 ?
>>>
>>>
>>> 另外:
>>> print "\a"  if   $str =~  /(?<=\s+)abc/ ;
>>>
>>> 怎么出现编译错误: Variable length lookbehind not implemented in regex; marked by
>>> <-- HERE in m/(?<=\s+)abc <-- HERE / at test_xiong.pl line 6.
>>>
>>>
>>> --
>>>             Yours Sincerely
>>>                     Zeng Hong
>>> >>>
>>>
>
>
> --
>             Yours Sincerely
>                     Zeng Hong




-- 
            Yours Sincerely
                    Zeng Hong

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。
 要在此论坛发帖,请发电子邮件到 [email protected]
 要退订此论坛,请发邮件至 [email protected]
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

回复