Delphi的MatchesMask文档说明了?
(强调我的):
通配符是星号(*)或问号(?)。星号与任意数量的字符匹配。 问号与单个任意字符匹配。
我的问题:?
中的MatchesMask
相当于正则表达式中的.
吗?或者它相当于正则表达式中的.?
?据我所知,两者之间存在差异。 .
完全匹配一个非换行符,而.?
匹配零或一个非换行符。
我已阅读this但除了告诉我使用正则表达式MatchesMask
之外,它没有多大帮助。
如果它有帮助,我真正想做的是将一些delphi代码转换为C#,我遇到了这段代码,其中myMask
是一个以?
结尾的字符串:
if MatchesMask(myString, myMask) then begin // myMask has value '100-10???'
Result := True;
exit;
end;
答案 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