gpt4 book ai didi

regex - 仅当不在带引号的字段中或在 2 个引号之间时才匹配字符

转载 作者:行者123 更新时间:2023-12-04 11:54:47 25 4
gpt4 key购买 nike

考虑以下字符串:

"bla ; bla"; bla
"bla "";"" bla"; bla
"bla ";" bla"; bla
我正在尝试匹配任何 ;不在带引号的字段中(例如 "bla ; bla" )或在 2 个引号之间。
换句话说,我想匹配第二个 ;在前 2 个字符串和所有 ; 中在最后一个字符串中。
这是我一直在尝试的 2 个正则表达式,但我无法制作一个适用于所有情况的正则表达式。
^(['"])(?:(?!\1).)*\1(?=;)(*SKIP)(*F)|;
^(['"])(?:(?!(?!\1)\1).)*\1(?=;)(*SKIP)(*F)|;
任何的想法?
编辑
我在最初的问题中省略了几个重要的细节。上面的示例行来自 .csv文件。我正在尝试提取所有文件分隔符 ;在来自不同文件的行中。我的问题是区分引用 ;在带引号的字段(第 2 行)和由 ; 分隔的两个带引号的字段内(第 3 行)。带引号的字段总是跟随着 ;就我而言。

最佳答案

使用实际的 CSV 解析器(好吧,分号-SV),如 Text::CSV_XS而不是试图用正则表达式来破解一些东西:

#!/usr/bin/env perl
use warnings;
use strict;
use feature qw/say/;
use Text::CSV_XS;

my $csv = Text::CSV_XS->new({ binary => 1, sep_char => ";"});

while (my $row = $csv->getline(\*DATA)) {
say $row->[0];
}


__DATA__
"bla ; bla"; bla
"bla "";"" bla"; bla
"bla ";" bla"; bla

关于regex - 仅当不在带引号的字段中或在 2 个引号之间时才匹配字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68432655/

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