需要创建一个匹配UNC管理共享的正则表达式

时间:2014-06-19 17:46:57

标签: regex 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 

请原谅我,因为我对定义表达式相当陌生,但我们将非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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)`

答案 1 :(得分: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");
}