提问人:sbi 提问时间:11/8/2010 最后编辑:Alan Mooresbi 更新时间:11/9/2010 访问量:720
将文件名通配符转换为正则表达式
translating filename wildcards to regex
问:
我需要将任意旧的DOS通配符字符串转换为正则表达式字符串,然后与.不幸的是,我的正则表达式知识非常尴尬。System.Text.RegularExpressions.Regex
我试图把我的脑袋包在像 、 和 .我目前的问题是,通常期望匹配以点结尾或根本没有点的文件。
所以我翻译成 ,但这显然是错误的。它不仅匹配 和 ,而且 匹配 。*.*
.*
*.
*.
*.
^.+[^\.].*$
blah
blah.
blah.blah
那么匹配 和 但不匹配的正确正则表达式语法是什么?blah
blah.
blah.blah
答:
1赞
Robb
11/8/2010
#1
我认为以下内容将为您服务
^[^.]+\.{0,1}$
从字符串的开头匹配除 .字符串可能以 0 或 1 结尾。s
评论
0赞
sbi
11/9/2010
(哦,事实证明我无法创建一个名为 的文件,尝试这样做将创建一个文件。blah.
blah
0赞
Alan Moore
11/9/2010
#2
我似乎无法创建名称以点结尾的文件,但我观察到,如果名称中没有其他点,则 glob 将匹配以点开头的名称。例如,它匹配 ,但不匹配 。它还匹配完全没有点的名称。其正则表达式为 .*.
.cvspass
.antelope.cfg
^\.?[^.]+$
“ends with”等价物是 ,但我认为你不需要它。如果还需要在开始或结束时匹配(但在其他任何地方没有匹配),则可以使用 .如果这两个条件互斥,请使用^[^.]+\.?$
^\.?[^.]+\.?$
^(?:\.?[^.]+|[^.]+\.)$
评论