Skip to main content
 首页 » 编程设计

c#之相当于什么在正则表达式中的delphi MatchesMask中

2024年04月12日37jillzhang

德尔福的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