免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2326 | 回复: 4
打印 上一主题 下一主题

请教Perl 正则表达式问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-10 14:09 |只看该作者 |倒序浏览
文件中的内容大致是:ABC=“DEF”,本来是想用@array= split/=/, $_; 把等号前面的字符和引号中内容作为数组的两个元素。
但是其中有一行的内容类似于 ABC="DE=F",引号里面的值也有等号,这样用split/=/分隔,就会破坏引号中完整的字符,因为我想把DE=F完全赋值给第二个数组元素。
请问各位大侠,这样的情况,该怎么匹配啊,或者怎样获取这一行中第一个出现的等号的前后的字符串呢?

论坛徽章:
0
2 [报告]
发表于 2010-09-10 14:19 |只看该作者
($key, $value) = $str =~ m/([^=]+)=(.*)/;

论坛徽章:
0
3 [报告]
发表于 2010-09-10 14:30 |只看该作者
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"
像这种问题,最好用正则,了解下正则。

论坛徽章:
0
4 [报告]
发表于 2010-09-10 15:03 |只看该作者
  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";
复制代码

论坛徽章:
0
5 [报告]
发表于 2010-09-10 15:05 |只看该作者
非常感谢二楼,三楼,四楼的朋友,现在匹配成功了,呵呵,看来正则还得好好学啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP