Gid*_*sey 0 .net c# regex vb.net
我有以下正则表达式来验证文件名:
^(([a-zA-Z]:| \)\)?(((.)|(..)|([^\/:*\?"\ | <>.](([^// :*\?"\ | <>.])|([^\/:*\?"\ | <>] [^\/:*\?"\ | <>.]))?))\) [^\/:*\?"\ | <>.](([^\/:*\?"\ | <>.])|([^\/:*\?"\ | <>]*[^\/:*\?"\ | <>.]))?$
我可以在VB.NET中使用它而不是C#.我无法弄清楚为什么它在一个而不是另一个中起作用.
VB代码:
Regex.Matches("c:\temp\abc.exe", "^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?))\\)*[^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?$")
Run Code Online (Sandbox Code Playgroud)
C#代码:
Regex.Matches("c:\temp\abc.exe", @"^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?))\\)*[^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?$");
Run Code Online (Sandbox Code Playgroud)
据我所知,两种语言中的模式都是相同的.当我运行VB代码时,我得到一个匹配.当我运行C#代码时,我什么也得不到.
任何人都能看到我错过的东西吗?