我吮吸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;
答案 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等。