【发布时间】:2021-06-12 15:39:08
【问题描述】:
输入:
$Input = q("Hello", 5769, "American Company, INC", "Perl", "NDS, SFC", 50);
期望的输出:
"Hello", 5769, "American Company INC", "Perl", "NDS SFC", 50
我试过了,
$Input =~ s/("[^"]+")//ge;
但是没有用。 请提出建议。
【问题讨论】:
输入:
$Input = q("Hello", 5769, "American Company, INC", "Perl", "NDS, SFC", 50);
期望的输出:
"Hello", 5769, "American Company INC", "Perl", "NDS SFC", 50
我试过了,
$Input =~ s/("[^"]+")//ge;
但是没有用。 请提出建议。
【问题讨论】:
你可以使用
$Input =~ s/("[^"]*")/$1=~s|,||gr/ge;
请参阅Perl demo。
这里,
("[^"]*") 匹配并捕获到 $1 和 ",然后是除 " 之外的零个或多个字符,然后是 ",然后$1=~s|,||gr 删除此匹配值中的每个逗号(将其替换为空字符串)。【讨论】:
不完全是您要问的,但您是否考虑过在您的输入中使用 Text::CSV_XS? (或文本::CSV)
【讨论】: