正则表达式到行尾
我想使用正则表达式在字符串中查找注释行。我尝试了以下,但它在第一个//
之后给了我一切。正则表达式到行尾
为什么?
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]*'
祝你好运!
回答:
您需要使用
Pattern := '//.*';
你甚至可以删除roMultiLine
的选择,因为你并不需要指定行的末尾,.*
结果会比换行符其他0+字符,几乎matcing任何线它从目前的位置结束(这里是//
之后)。
以上是 正则表达式到行尾 的全部内容, 来源链接: utcz.com/qa/261609.html