Perl:读取字符串中双引号之间的内容

时间:2013-01-11 02:31:51

标签: perl

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

test_case_be "+test+tx+rx+path"

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

  1. 双引号[test_case_be]之外的字符串我想存储在$temp1中。
  2. 双引号[+test+tx+rx+path]中的字符串我想将其存储在$temp2中。
  3. 有人可以帮我提供一些如何执行上述操作的示例代码吗?

5 个答案:

答案 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 = $`.$';