Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件名通配符转换为正则表达式_C#_.net_Regex - Fatal编程技术网

C# 将文件名通配符转换为正则表达式

C# 将文件名通配符转换为正则表达式,c#,.net,regex,C#,.net,Regex,我需要将任意好的旧DOS通配符字符串转换为正则表达式字符串,然后与System.Text.RegularExpressions.regex一起使用。不幸的是,我的正则表达式知识相当令人尴尬 我正试着把我的头脑集中在像*.*.,*.和*.这样的东西上。我目前的问题是,*。通常需要匹配以点结尾或根本没有点的文件。 所以我把.*.翻译成^.+[^\.].*$,但这显然是错误的。它不仅匹配blah和blah.,而且还匹配blah.blah 那么什么是正确的正则表达式语法来匹配blah和blah.,而不是

我需要将任意好的旧DOS通配符字符串转换为正则表达式字符串,然后与
System.Text.RegularExpressions.regex
一起使用。不幸的是,我的正则表达式知识相当令人尴尬

我正试着把我的头脑集中在像
*.*.
*.
*.
这样的东西上。我目前的问题是,
*。
通常需要匹配以点结尾或根本没有点的文件。
所以我把
.*.
翻译成
^.+[^\.].*$
,但这显然是错误的。它不仅匹配
blah
blah.
,而且还匹配
blah.blah


那么什么是正确的正则表达式语法来匹配
blah
blah.
,而不是
blah.blah

<

^[^.]+\.{0,1}$

从字符串开始匹配任何字符,但不匹配。字符串可能以0或1结尾。

我似乎无法创建名称以点结尾的文件,但我观察到glob
*。
将匹配一个名称,如果该名称中没有其他点,则该名称将以点开头。例如,它匹配
.cvspass
,但不匹配
.antelope.cfg
。它也匹配没有点的名字。这个函数的正则表达式是
^\?[^.]+$


“ends with”等价物应该是
^[^.]+\.?$
,但我认为您不需要它。如果您还需要在开始时或结束时进行匹配(但不在其他地方),则可以使用
^\.?[^.]+\.?$
。如果这两个条件相互排斥,请使用
^(?:\.?[^.]+\.[^.]+\.$

(哦,事实证明我无法创建名为
的文件。
,尝试这样做将创建一个文件
blah