请教Perl 正则表达式问题
时间:2010-09-10
来源:互联网
文件中的内容大致是:ABC=“DEF”,本来是想用@array= split/=/, $_; 把等号前面的字符和引号中内容作为数组的两个元素。
但是其中有一行的内容类似于 ABC="DE=F",引号里面的值也有等号,这样用split/=/分隔,就会破坏引号中完整的字符,因为我想把DE=F完全赋值给第二个数组元素。
请问各位大侠,这样的情况,该怎么匹配啊,或者怎样获取这一行中第一个出现的等号的前后的字符串呢?
但是其中有一行的内容类似于 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"
像这种问题,最好用正则,了解下正则。
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
- #!/usr/bin/perl
-
- my $s = 'ABC="DE=F"';
-
- my @a = split "=",$s,2;
-
- print "$a[0]\n";
- print "$a[1]\n";
作者: zhaobin81 发布时间: 2010-09-10
非常感谢二楼,三楼,四楼的朋友,现在匹配成功了,呵呵,看来正则还得好好学啊。
作者: xuezhilei40308 发布时间: 2010-09-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28