2014-06-19 28 views
0

我想要拿出一个正则表达式来匹配以下内容。需要创建一个正则表达式来匹配一个UNC管理共享

file://server-name-01/e$/(any file or subfolder)?ds=test_01 

下面是我一直在使用的表达式,但由于某种原因,这将匹配任何服务器名称。

.*[a-zA-Z]:\/\/.*[sf.ps.gdo02].*\?ds=[a-zA-Z0-9_]+$ 

我的目标是,以匹配特定的服务器名称和管理共享,以便共享中有针对性的任何文件或子文件夹将是一个匹配。

我对使用1表达式匹配以下内容感兴趣。

1) file://server-name-01/e$/(any file or subfolder)?ds=test_01 
2) file://server-name-02/e$/(any file or subfolder)?ds=test_01 
3) file://server-name-03/e$/(any file or subfolder)?ds=test_01 

原谅我,因为我是相当新的定义表达式,但任何帮助,将不胜感激。

+0

的链接群:http://www.regular-expressions.info/brackets.html的链接类:http://www.regular-expressions.info/charclass.html –

+0

谢谢您快速反应。通过使用下面的表达式,我能够实现我正在寻找的东西。 'code'^。* \/\/server.name。\ d \ d \ /.* [Ee] \ $ \ /.* \?ds =。* $ – user3757483

回答

0

正则表达式:

^.*\/([^\/]+)\/([^\/]+)\/([^\/]+)\?ds=.*$ 

Live demo

实施例:

file://server-name-01/e$/(any file or subfolder)?ds=test_01 

匹配度:

1 `server-name-01` 
2 `e$` 
3 `(any file or subfolder)` 
0

以下在Perl中有效。不知道您是否需要更大的灵活性,但如果我正确理解了您的需求,它就可以工作(对其进行编码,测试,直接粘贴)。

printf("Enter your expression: "); 
my $exp = <STDIN>; 
chomp($exp); 

if ($exp =~ /file:\/\/server-name-0[1-3]\/e\$\/.*\?ds=test_01/) 
{ 
    printf("Matched.\n"); 
} 
else 
{ 
    printf("NO MATCH!\n"); 
} 
相关问题