+ -
当前位置:首页 → 问答吧 → 请教Perl 正则表达式问题

请教Perl 正则表达式问题

时间:2010-09-10

来源:互联网

文件中的内容大致是:ABC=“DEF”,本来是想用@array= split/=/, $_; 把等号前面的字符和引号中内容作为数组的两个元素。
但是其中有一行的内容类似于 ABC="DE=F",引号里面的值也有等号,这样用split/=/分隔,就会破坏引号中完整的字符,因为我想把DE=F完全赋值给第二个数组元素。
请问各位大侠,这样的情况,该怎么匹配啊,或者怎样获取这一行中第一个出现的等号的前后的字符串呢?

作者: xuezhilei40308   发布时间: 2010-09-10

($key, $value) = $str =~ m/([^=]+)=(.*)/;

作者: sykp241095   发布时间: 2010-09-10

my $str='ABC="DE=F"';
my($key,$value)=split q{=},$str,2;
print "$key\t$value\n";
$str=~m#=#;
print "$`\t$'\n";
$str=~m#(.+?)=(.*)#;
print "$1\t$2\n";
$str=~m#(\w+)=(.*)#;
print "$1\t$2\n";
结果
ABC        "DE=F"
ABC        "DE=F"
ABC        "DE=F"
ABC        "DE=F"
像这种问题,最好用正则,了解下正则。

作者: magnet2008   发布时间: 2010-09-10

  1. #!/usr/bin/perl

  2. my $s = 'ABC="DE=F"';

  3. my @a = split "=",$s,2;

  4. print "$a[0]\n";
  5. print "$a[1]\n";
复制代码

作者: zhaobin81   发布时间: 2010-09-10

非常感谢二楼,三楼,四楼的朋友,现在匹配成功了,呵呵,看来正则还得好好学啊。

作者: xuezhilei40308   发布时间: 2010-09-10