文字列があり、文字列の一部の内容が二重引用符で囲まれています。例えば:
test_case_be "+test+tx+rx+path"
上記の入力では、文字列全体を2つの部分に分割します。
- 二重引用符の外側の文字列[
test_case_be
]に格納したい$temp1
。 - 二重引用符で囲まれた文字列[
+test+tx+rx+path
]これをに格納し$temp2
ます。
上記の方法に関するサンプルコードを誰かが手伝ってくれますか?
文字列があり、文字列の一部の内容が二重引用符で囲まれています。例えば:
test_case_be "+test+tx+rx+path"
上記の入力では、文字列全体を2つの部分に分割します。
test_case_be
]に格納したい$temp1
。+test+tx+rx+path
]これをに格納し$temp2
ます。上記の方法に関するサンプルコードを誰かが手伝ってくれますか?
これはそれを行うことができます:
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
$str ~= /(.*)\"(.*)\"/; //capture group before quotes and between quotes
$temp1 = $1; // assign first group to temp1
$temp2 = $2; // 2nd group to temp2
これはあなたが望むことをするはずです。
一方通行:
my $str='test_case_be "+test+tx+rx+path"';
my ($temp1,$temp2)=split(/"/,$str);
別のオプションは次のとおりです。
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
$str =~ /"(.*?)"/;
$inside_quotes = $1;
$outside_quotes = $`.$';