有一行HTML代码,我使用C#和Delphi的TPerlregEx正则表达式分别测试了一下。源文件部分代码:
<span id="content_164224">品味【生活】。</span>
在C#中使用正则表达式:
(?<=content_\d+">)[^<]+
结果为:品味【生活】。
在Delphi中使用和C#相同的正则表达式(?<=content_\d+">)[^<]+则报错,错误是:
TPerlRegEx.Compile() - Error in regex at offset 17: lookbehind assertion is not fixed length.将正则表达式改为:(?<=content_\d{6}">)[^<]+则显示正常。为什么在C#中可以正常使用\d+呢,而在TPerlregEx不行?按理说不应该出错的。\d+就是在不能断言后边长度的情况下才使用的,如果能断言的话,那还要+号这个啥作用呀。我这里不能使用\d{6},因为中间那几个数字是随机的,不知道会不会一直是6个数字,也有可能是7个,8个等。想问下如何才能在Delphi中使用\d+这个用法。

解决方案 »

  1.   

    楼主如果用XE或XE2的话,可以试一下官方自带的正则库试试。System.RegularExpressions单元
      

  2.   

    我用的是XE,使用自带的正则库也是提示那个错误。郁闷。
    ---------------------------
    Project1
    ---------------------------
    Error in regular expression at offset 17: lookbehind assertion is not fixed length.
    ---------------------------
    确定   
    ---------------------------