Regex 具有双引号和空格的Perl分割字符串

Regex 具有双引号和空格的Perl分割字符串,regex,string,perl,parsing,Regex,String,Perl,Parsing,我有这样一个字符串:“abc”“cd-e”。我需要将其拆分为以下两个字符串: “abc” “cd-e” 我在Perl中尝试了几个选项,但无法满足我的需要。有人能告诉我吗?谢谢 my @strings = $input =~ /"[^"]*"/g; 假设输入有效。基本上,您可以使用正则表达式匹配来验证或提取,但同时执行这两项操作相当困难 假设引用的字段不能包含引号,因为您没有提到转义机制 假设输入有效。基本上,您可以使用正则表达式匹配来验证或提取,但同时执行这两项操作相当困难 假设引用的字

我有这样一个字符串:
“abc”“cd-e”
。我需要将其拆分为以下两个字符串:

  • “abc”
  • “cd-e”
  • 我在Perl中尝试了几个选项,但无法满足我的需要。有人能告诉我吗?谢谢

    my @strings = $input =~ /"[^"]*"/g;
    
    • 假设输入有效。基本上,您可以使用正则表达式匹配来验证或提取,但同时执行这两项操作相当困难
    • 假设引用的字段不能包含引号,因为您没有提到转义机制
    • 假设输入有效。基本上,您可以使用正则表达式匹配来验证或提取,但同时执行这两项操作相当困难
    • 假设引用的字段不能包含引号,因为您没有提到转义机制

    您可以在前面有
    和后面有
    的空格上拆分:

    使用严格;
    使用警告;
    我的$s='abc'cd-e';
    
    my@matches=split/(?您可以在前面加一个
    ,后面加一个
    的空格上进行拆分:

    使用严格;
    使用警告;
    我的$s='abc'cd-e';
    
    my@matches=split/(?如果您的输入按照您的建议有两个字符串(而不是任意的n个字符串),那么这应该可以工作:

    $s = '"abc" "cd - e"';
    
    $s =~ /(".*") (".*")/;
    $s1 = $1;
    $s2 = $2;
    
    或者,您可以将
    替换为“非引号”,即
    [^”]
    ,使其更加安全:


    如果您的输入按照您的建议有两个字符串(而不是任意的n个字符串),那么这应该可以工作:

    $s = '"abc" "cd - e"';
    
    $s =~ /(".*") (".*")/;
    $s1 = $1;
    $s2 = $2;
    
    或者,您可以将
    替换为“非引号”,即
    [^”]
    ,使其更加安全:

    还:还:
    $s =~ /("[^"]*") ("[^"]*")/;
    $s1 = $1;
    $s2 = $2;