我有一个字符串,字符串的一些内容是双引号。 例如:
test_case_be "+test+tx+rx+path"
对于上面的输入,我想将整个字符串分成两部分:
test_case_be
]之外的字符串我想存储在$temp1
中。 +test+tx+rx+path
]中的字符串我想将其存储在$temp2
中。有人可以帮我提供一些如何执行上述操作的示例代码吗?
答案 0 :(得分: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
答案 1 :(得分:1)
$str ~= /(.*)\"(.*)\"/; //capture group before quotes and between quotes
$temp1 = $1; // assign first group to temp1
$temp2 = $2; // 2nd group to temp2
这应该做你想要的。
答案 2 :(得分:1)
一种方式:
my $str='test_case_be "+test+tx+rx+path"';
my ($temp1,$temp2)=split(/"/,$str);
答案 3 :(得分: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
答案 4 :(得分:-1)
$str =~ /"(.*?)"/;
$inside_quotes = $1;
$outside_quotes = $`.$';