德尔福的MatchesMask文档说关于 ? (强调我的):
Wildcards are asterisks (*) or question marks (?). An asterisk matches any number of characters. A question mark matches a single arbitrary character.
我的问题: MatchesMask 中的 ? 等同于正则表达式中的 . 吗?还是等同于正则表达式中的 .??据我所知,两者之间是有区别的。 . 匹配 一个 个非换行符,而 .? 匹配零个或一个 个非换行符。
我已阅读 this但除了告诉我对 MatchesMask 使用正则表达式外,它没有太大帮助。
如果有帮助,我真正想做的是将一些 delphi 代码转换为 C#,我在其中遇到了这段代码,其中 myMask 是以几个 ?< 结尾的字符串:
if MatchesMask(myString, myMask) then begin // myMask has value '100-10???'
Result := True;
exit;
end;
请您参考如下方法:
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
