gpt4 book ai didi

正则表达式翻转并合并除第一个反斜杠之外的所有反斜杠

转载 作者:行者123 更新时间:2023-12-01 09:18:54 24 4
gpt4 key购买 nike

我正在尝试编写将翻转并合并除第一个反斜杠之外的所有反斜杠的正则表达式。

像这样:

 C:\a\b\c\d\e         --> C:/a/b/c/d/e
C:\a\\b\\\c\d\\\\\\e --> C:/a/b/c/d/e
C:/a///b//c/d//////e --> C:/a/b/c/d/e
C:\a/\/b/\c/d//\///e --> C:/a/b/c/d/e
C:/a/b/c/d/e --> C:/a/b/c/d/e

但是

\\my_share\a\b\c\d/e             --> //my_share/a/b/c/d/e
\\my_share\\\a\\\\b\c\\\//\\d\e --> //my_share/a/b/c/d/e
\\/\my_share\\\a\\\\b\c\\\\\\d\e --> //my_share/a/b/c/d/e (if multiple '\' or\and '/' in the front - put two //)
\my_share\\\a\\\\b\c\\\\\\d\e --> /my_share/a/b/c/d/e (if one '\' or\and '/' in the front - flip it)
my_share\\\a\\\\b\c\\\\\\d\e --> my_share/a/b/c/d/e (if no '\' or\and '/' in the front - don't do anything)

如何在 powershell 中做到这一点? $my_path -replace "\\", "/" ?

最佳答案

你可以使用

$s = 'C:\a\b\c\d\e'
[regex]::Replace($s,'^([\\/]{2,})|[\\/]+',{param($match) If ($match.Groups[1].Success) { '//' } Else { '/' }})

正则表达式匹配

  • ^([\\/]{2,}) - 第 1 组由 2 个或更多 /\ 字符组成字符串的开头
  • | - 或
  • [\\/]+ - 1 个或多个 /\ 其他任何字符。

如果第 1 组匹配,则使用 // 作为替换,否则使用 /

关于正则表达式翻转并合并除第一个反斜杠之外的所有反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49527376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com