2

文字列があり、文字列の一部の内容が二重引用符で囲まれています。例えば:

test_case_be "+test+tx+rx+path"

上記の入力では、文字列全体を2つの部分に分割します。

  1. 二重引用符の外側の文字列[ test_case_be]に格納したい$temp1
  2. 二重引用符で囲まれた文字列[ +test+tx+rx+path]これをに格納し$temp2ます。

上記の方法に関するサンプルコードを誰かが手伝ってくれますか?

4

5 に答える 5

2

これはそれを行うことができます:

my $input_string = qq(test_case_be "+test+tx+rx+path");
my $re = qr/^([^"]+)"([^"]+)"/;

# Evaluating in list context this way affects the first variable to the
# first group and so on
my ($before, $after) = ($input_string =~ $re);

print <<EOF;
before: $before
after: $after
EOF

出力:

before: test_case_be 
after: +test+tx+rx+path
于 2013-01-11T02:37:00.483 に答える
1
$str ~= /(.*)\"(.*)\"/; //capture group before quotes and between quotes
$temp1 = $1; // assign first group to temp1
$temp2 = $2; // 2nd group to temp2

これはあなたが望むことをするはずです。

于 2013-01-11T02:35:07.087 に答える
1

一方通行:

my $str='test_case_be "+test+tx+rx+path"';
my ($temp1,$temp2)=split(/"/,$str);
于 2013-01-11T02:43:15.253 に答える
0

別のオプションは次のとおりです。

use strict;
use warnings;

my $string = 'test_case_be "+test+tx+rx+path"';
my ( $temp1, $temp2 ) = $string =~ /([^\s"]+)/g;

print "\$temp1: $temp1\n\$temp2: $temp2";

出力:

$temp1: test_case_be
$temp2: +test+tx+rx+path
于 2013-01-11T04:45:57.127 に答える
-1
$str =~ /"(.*?)"/;
$inside_quotes = $1;
$outside_quotes = $`.$';
于 2013-01-11T02:39:33.583 に答える