1

我正在寻找正则表达式的帮助。我有以下\\server\share1\folder1我想从中获取的 UNC 路径server。服务器名称总是不同的,有时是 IP 地址。

我有以下一直在使用的表达式,但我似乎无法让它以我想要的方式工作。

\\?.*\\

这将返回以下结果\\server\share\。有人可以帮我抓住server而不是\\server\吗?

4

3 回答 3

2

你可以使用这个:

^\\\\.*?\\

^是行锚的开头,仅在开头匹配。

.*?是 的修改版本,.*因此它将匹配到它后面的模式的匹配项;通常被称为“尽可能少地”匹配,与其“贪婪”对应物相反。


或者,您可以使用否定类:

^\\\\[^\\]+\\

[^\\]+匹配除反斜杠以外的任何字符。


如果您想server不使用反斜杠,您应该能够使用捕获组(通过使用括号)并提取匹配的组(通过$1or \1):

^\\\\(.*?)\\

或者

^\\\\([^\\]+)\\

或者,如果 UNC 默认找到任何第一个匹配项,那么您可以简单地使用[^\\]+.

于 2013-10-11T17:44:47.090 回答
0

尝试使用 '\' 执行 string.split(或您正在使用的语言中的等效项),然后从结果数组中获取“服务器”

于 2013-10-11T17:46:32.130 回答
0

您可以使用环视

(?<=^\\)[^\\]+(?=\\)

这将匹配server.\server\share\folder

于 2013-10-11T17:55:33.733 回答