使用正则表达式匹配模式后,排除子字符串



我想写一个正则表达式来拆分字符串,比如只选择几个元素。例如:M:SharesProfilesServerProfilesabcd.contoso.V2.01

我的目标是:

abcd.V2.01,使得域名即'contoso'被丢弃

但是,在找到匹配项后,我无法排除字符串的一部分。我试过

$original = 'M:SharesProfilesServerProfilesabcd.contoso.V2.01'
$modified = $original -replace '.*\([^\.]+.contoso.V2)[^\]*$', '$1'

返回$modified作为'abcd.contoso.V2'

您可以使用两个捕获组:

$original = 'M:SharesProfilesServerProfilesabcd.contoso.V2.01'
$original -replace '.*\([^\.]*).contoso(.V2[^\]*)$', '$1$2'
# => abcd.V2.01

不要忘记转义正则表达式模式中的文字点。下面是上面regex的演示详细信息

  • .*-LF字符以外的任何零个或多个字符
  • \-一个字符
  • ([^\.]*)-组1($1(:除.之外的任何零个或多个字符
  • .contoso-.contoso字符串
  • (.V2[^\]*)-组2($2(:.V2字符串,然后是除之外的任何零个或多个字符
  • $—字符串结束

最新更新