正则表达式到行尾

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

为什么?

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

回到顶部