正则表达式至少匹配3个反斜杠

时间:2020-04-22 20:06:33

标签: regex

我需要区分以下字符串

\\server\path1\path2
\\server\path1

第一次出现的总是两个反斜杠\\,但它可能不是一行的开始。之前可能有空格或其他文本。

在第一个字符串中,至少应有4个反斜杠 \\服务器\路径1 \路径2 ... more backslashes

在第二个字符串中,只能有3个反斜杠 \\服务器\路径1

我需要2个正则表达式。

对于字符串1,我想出了

[\\\\]{1}[a-zA-Z_\-0-9]+[\\]{1}[a-zA-Z_\-0-9]+[\\]

说明

[\\\\]{1}            one occurrence of \\
[a-zA-Z_\-0-9]+      any number of one or more alphanumeric with dash (-)
[\\]{1}              one occurrence of \
[a-zA-Z_\-0-9]+      any number of one or more alphanumeric with dash (-)
[\\]                 one occurrence of \

对于字符串2,如何将反斜杠的匹配数限制为仅3个。

1 个答案:

答案 0 :(得分:0)

您可以使用

(?<!\\)\\(?:\\[^\\]+){3}(?!\S)
(?<!\\)\\(?:\\[^\\]+){2}(?!\S)

请参见regex #1 demoregex #2 demo

详细信息

  • (?<!\\)-如果当前位置的左侧紧跟着\,则反向查找将使匹配失败
  • \\-一个\字符
  • (?:\\[^\\]+){3}-出现\个char序列的三个(或第二个正则表达式中为2个),然后出现\以外的1个或多个char
  • (?!\S)-如果在当前位置的右边不存在非空格字符(即必须有空格或字符串的末尾),则负向超前将导致匹配失败。
相关问题