我有一个字符串,字符串的一些内容用双引号引起来。例如:
test_case_be "+test+tx+rx+path"
对于上述输入,我想将整个字符串分成两部分:
- 双引号 [
test_case_be
] 外的字符串我要存储在$temp1
. - 双引号 [
+test+tx+rx+path
] 内的字符串我想将它存储在$temp2
.
有人可以帮助我提供有关如何执行上述操作的示例代码吗?
我有一个字符串,字符串的一些内容用双引号引起来。例如:
test_case_be "+test+tx+rx+path"
对于上述输入,我想将整个字符串分成两部分:
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
这应该做你想要的。
One way:
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 = $`.$';