有一行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+这个用法。
<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+这个用法。
---------------------------
Project1
---------------------------
Error in regular expression at offset 17: lookbehind assertion is not fixed length.
---------------------------
确定
---------------------------