相当于什么?在MatchesMask中正则表达式的delphi?

时间:2017-01-15 05:52:44

标签: c# regex delphi

Delphi的MatchesMask文档说明了?(强调我的):

  

通配符是星号(*)或问号(?)。星号与任意数量的字符匹配。 问号与单个任意字符匹配。

我的问题:?中的MatchesMask相当于正则表达式中的.吗?或者它相当于正则表达式中的.??据我所知,两者之间存在差异。 .完全匹配一个非换行符,而.?匹配零或一个非换行符。

我已阅读this但除了告诉我使用正则表达式MatchesMask之外,它没有多大帮助。

如果它有帮助,我真正想做的是将一些delphi代码转换为C#,我遇到了这段代码,其中myMask是一个以?结尾的字符串:

if MatchesMask(myString, myMask) then begin  // myMask has value '100-10???'
  Result := True;
  exit;
end;

1 个答案:

答案 0 :(得分:3)

MatchesMask中的?匹配任何单个任意字符,就像DOS通配符中的?一样。您指定的特定掩码(' 100-10 ???')需要字符串100-10后跟三个任意字符。

等效的正则表达式是

100-10.{3}

匹配

100-10abc
100-10ABC
100-10X12
100-10399

但不匹配

100-20abc
100-22xyz
100-10
100-101
100-1023