正则表达式匹配反斜杠

时间:2013-10-11 17:42:52

标签: regex unc

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

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

\\?.*\\

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

3 个答案:

答案 0 :(得分:2)

您可以使用:

^\\\\.*?\\

^是行锚点的开头,只会在开头匹配。

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


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

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

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


如果你想让server没有反斜杠,你应该能够使用一个捕获组(通过使用括号)并提取匹配的组(通过$1\1 ):

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

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

或者,如果UNC默认找到任何第一个匹配项,那么您只需使用[^\\]+

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用lookaround

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

这将匹配server中的\server\share\folder