gpt4 book ai didi

regex - 删除批处理或 PoSh 的引号之间的逗号

转载 作者:行者123 更新时间:2023-12-02 09:17:07 26 4
gpt4 key购买 nike

我有一个 CSV 文件,其内容如下:

A,B,C
D,"E,F",G
H,I,"J,K,L"

我需要删除引号之间的逗号(也删除引号,但这并不那么重要):

A,B,C
D,EF,G
H,I,JKL

我看了 PoSh -replace运算符,但我无法让它捕获多个组值:

 PS >"D,`"E,F`",G" -replace "`"((?:[^,`"]+)\,?)+`"", '$1'
D,F,G

正如您所看到的,当重复该组时,仅保留最后捕获的值。有办法实现我想要的转换吗?

https://regex101.com/r/ON1rgp/1/

最佳答案

您可以定义一个回调来传递给 Regex::Replace 方法,您可以在其中抓取引号之间的部分并删除其中的所有 ,:

$callback = {  param($match) $match.Groups[1].Value.Replace(',','') }
$s = "D,`"E,F`",G"
$rex = [regex]'"([^"]*)"'
$rex.Replace($s, $callback)

enter image description here

正则表达式是 "([^"]*)" 匹配 ",然后捕获到组 1(即 $match.Groups[1 ].Value) 除 " 之外的任何零个或多个字符,然后匹配 "。如果您转义了引号,则需要对其进行增强,但方法是相同的。

关于regex - 删除批处理或 PoSh 的引号之间的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45859551/

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