2014-06-19 32 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"); 
} 
相關問題