• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

正则表达式到行尾

regex 来源:Tahtu 3次浏览

我想使用正则表达式在字符串中查找注释行。我尝试了以下,但它在第一个//之后给了我一切。正则表达式到行尾

为什么?

program Project1; 

uses 
    RegularExpressions; 

var 
    Text: string; 
    Pattern: string; 
    RegEx: TRegEx; 
    Match: TMatch; 
begin 
    Text := 'Hello' + #13#10 
    + '// Test' + #13#10 
    + 'Text' + #13#10; 

    Pattern := '//[^$]*$'; 

    RegEx := TRegEx.Create(Pattern, [roCompiled, roMultiLine]); 
    Match := RegEx.Match(Text); 
    if (Match.Success) then 
    begin 
    Match.Index; // 8 -> Expected 
    Match.Length; // 15 -> I would like to have 9 
    end; 
end. 


===========解决方案如下:

你不应该使用在你的正则表达式的语法如下:[^$]*

这意味着采取有不美元$ 0到N次的所有字符(包括EOL字符)是什么原因导致你的正则表达式来取整串。

使用该正则表达式,而不是:

Pattern := '//[^\r\n]*' 

祝你好运!


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)