有关上下文,请查看此SO 帖子。
完整脚本:
(get-content file.txt -ReadCount 0) -replace '([^,]")"','$1' |
set-content newfile.txt
我专门在这部分脚本中寻找逻辑的翻译:
'([^,]")"','$1' |
有人可以解释逻辑/语法,还是指出正确的方向?
有关上下文,请查看此SO 帖子。
完整脚本:
(get-content file.txt -ReadCount 0) -replace '([^,]")"','$1' |
set-content newfile.txt
我专门在这部分脚本中寻找逻辑的翻译:
'([^,]")"','$1' |
有人可以解释逻辑/语法,还是指出正确的方向?
'([^,]")"'
是一个正则表达式,它匹配除逗号后跟两个连续双引号之外的任何字符。括号将第一个字符和第一个双引号组合在一起。
'$1'
是对匹配中组的反向引用,它在替换中的意思是“仅用第一个组替换匹配”,例如,在字符串foo""bar
中,序列o""
将被替换为 just o"
,从而删除第二个双引号。
|
是一个管道,它将替换结果馈送到管道中的下一个 cmdlet ( Set-Content newfile.txt
)。
'([^,]")"','$1'
让我们把它分成两部分,正则表达式模式'([^,]")"'
和替换文本'$1'
。正()
则表达式中的 模式创建了一个未命名的捕获组,它在替换文本中被引用,$1
即它是第一个(并且仅在这种情况下)一组括号。在此捕获组中匹配和捕获的内容是除逗号后跟双引号外的任何字符,该双引号后跟捕获组之外的另一个双引号。因此,它消除了两个连续双引号中的一个,除非第一个双引号前面有逗号。