delphi 为什么我的不区分大小写的TRegEx不匹配任何内容?

hrirmatl  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(121)

当我使用不区分大小写的Regex字符串时,我遇到了一个问题。Regex不匹配任何东西。
我的正则表达式:

'/stream_map=(.[^&]*?)&/i'

资料来源:

procedure TForm1.Button1Click(Sender: TObject);
var 
    regex : TRegEx;
    exper : string;
    fmatch : TMatchCollection;
    example: string;
begin
    example := 'Stream_Map=TestMatch&' 
    exper := '/stream_map=(.[^&]*?)&/i';
    regex := TRegEx.Create(exper);
    fmatch := regex.Matches(example);
    ShowMessage(IntToStr(fmatch.Count));
end;

匹配计数显示“0”。

r7s23pms

r7s23pms1#

在我看来,你似乎对正则表达式使用了错误的语法。

'/stream_map=(.[^&]*?)&/i'

看起来像Perl正则表达式语法。
对于 Delphi 的TRegEx,您需要删除斜杠分隔符,并通过选项参数指定大小写不敏感性。就像这样:

regex := TRegEx.Create('stream_map=(.[^&]*?)&', [roIgnoreCase]);

相关问题