2

我有一个字符串,字符串的一些内容用双引号引起来。例如:

test_case_be "+test+tx+rx+path"

对于上述输入,我想将整个字符串分成两部分:

  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

One way:

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 回答