C#Regex用于带扩展名的文件名

时间:2013-01-31 18:16:25

标签: c# regex

我吮吸Regex,但我需要一个能理解文件扩展名形式的文件 这是: Anycharacter.threecharachter扩展 我很好用之类的东西,如果编译器得到它

我试过

Regex ex = new regex(".*\\..*")

Regex ex = new regex(".*\\....");

应传递的示例:

 ex.IsMatch("test.zip");   

感谢@Alice的说明; 我改变了我的代码文件浏览器现在显示: -rwxr-x --- 1 root nto 1007 Jan 10 14:28 chat.sh

OR

drwxr-x --- 1 root nto 1007 Jan 10 14:28 account

OR

lrwxrwxrwx 1 root nto 9 Jan 15 06:43 lib - > /碱/ lib中

d是在行的开头定义目录的内容。 我想阅读这样的一行并得到回报

bool Isdirectory;

string fName;

5 个答案:

答案 0 :(得分:1)

[^\.]    //Not a period once
.*       //Anything 0..more times
\.       //Period
.{1,3}   //Anything, up to three times

所有在一起:

[^\.].*\..{1,3}

如果整行/文字必须匹配,请将其放入^$

^[^\.].*\..{1,3}$

请注意,没有扩展名的文件也是有效的文件名,因此您可能需要在某些时候放宽期间.的要求:)另外,句点匹配文件名中无效的符号,例如{{1 }},*等等,所以你可能会在这里提出错误的问题。

编辑: 现在你添加了标志,这个问题更有意义。新检查非常容易:

/

答案 1 :(得分:0)

我想这就是你要找的东西

^.*\.[^.]{3}$

如果您想多次匹配特定字符,可以使用{}量词

所以.{3}会匹配三个字符

x{2}将匹配2 x

x{1,5}将匹配1到5 x

答案 2 :(得分:0)

这是我用于Windows文件名的文件名Regex

^[^/\\:*""<>|]+?\.\w{1,3}$

这些符号^/\:*"<>|表示Windows上文件名的不允许字符。

如果您不希望文件名中有多个句点,则可以使用以下句号:

^[^/\\:*""<>|.]+?\.\w{1,3}$

答案 3 :(得分:0)

    string x = "drwx------+ 1 Administrators Domain Users        0 Nov 30  2011 VSWebCache";
    Match m = Regex.Match(x, @"^(?<dir>d)?.*?(?<name>\w+(?:\.\w{3})?)$");

    if(m.Success)
    {
        string name = m.Groups["name"].Value;
        bool isDir = m.Groups["dir"].Success;
    }

“name”现在是一个包含文件名或目录名的字符串。 “isDir”现在包含一个bool,无论列表以“d”开头是否为目录。

你的正则表达式如下:

^(?<dir>d)?.*?(?<name>\w+(?:\.\w{3})?)$

这是这样说的: 创建名为“dir”和“name”的2个组。如果以“d”开头,则组“dir”将包含“d”。组“名称”将包含文件名或目录名。名称中有一些游戏,因为它匹配“filename”和“filename.ext”如果是“。”存在于名称中。

这也适用于

string x = @"-rwx------+ 1 Administrators Domain Users    72080 Dec 16  2011 g2mdlhlpx.exe"; 

答案 4 :(得分:-1)

试试这个:

.+\.(.{1,3})+

.+将查找文件名,并确保文件名包含至少1个字符。 \.会寻找一段时间。 .{1,3}会查找可能长达一到三个字符的扩展名。 (.{1,3})+将处理扩展名为filename.tar.gz的文件名
所以正则表达式将验证filename.z,filename.gz,filename.zip,filename.tar.gz等。