免费注册 查看新帖 |

Chinaunix

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

perl正则表达式,关于匹配. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-25 10:11 |只看该作者 |倒序浏览
现有文件aa.txt
<input name="abc" >
<input name="cde" >
<input name="ddssffe">

把通过perl把上边内容替换为

<input name="abc" id="abc">
<input name="cde" id="cde">
<input name="ddssffe" id="ddssffe">

我已经用vi搞定了。现在试着用perl,但碰到一些问题。关于正则匹配的问题 。




#!/usr/bin/perl -w

open(OPENF1,"aa.txt") || die "can't open file!";
open(WRITEF1,">bb.txt") || die "cant't open file! ";
while( <OPENF1> )
{
        m/name="[a-z]"/g;
        print $_;
}
close(WRITEF1);
close(OPENF1);



m/name="[a-z]"/g;这一句。我只想匹配到name="内容",但我这句会把整行都匹配到。

请大家帮忙。解答.

[ 本帖最后由 Ecore 于 2007-9-20 17:48 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-05-25 10:21 |只看该作者
[a-z]是不是只能匹配单个字符啊?
我是菜鸟,不懂
还有g选项是什么作用呢,在书上看了下都没看懂

论坛徽章:
0
3 [报告]
发表于 2007-05-25 10:22 |只看该作者
  1. while( <OPENF1> )
  2. {
  3.         m/name="[a-z]"/g;
  4.         print $_;
  5. }
复制代码



這段目地是幹什麼

论坛徽章:
0
4 [报告]
发表于 2007-05-25 10:29 |只看该作者
如果在 /g 模式里没有捕获圆括弧,那么返回完整的匹配。如果有捕获圆括弧,那么返回捕获到的字串。

我觉得可能是因为没匹配上所以全部都返回了吧
改成"([a-z]{3})"试试

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2007-05-25 10:37 |只看该作者

  1. #!/usr/bin/perl

  2. open(FILE,"<aa.txt");
  3. open(DEST,">bb.txt");
  4. while(<FILE>){
  5.     /(.*)"(\w+)"(.*)>$/;
  6.     print DEST "$1\"$2\"$3 id=\"$2\">\n";
  7. }
  8. close(FILE);
  9. close(DEST);

复制代码


初学perl,呵呵,看行不

论坛徽章:
0
6 [报告]
发表于 2007-05-25 11:26 |只看该作者
谢谢楼上的.
能不能用$&这个变量改写?

论坛徽章:
0
7 [报告]
发表于 2007-05-25 11:31 |只看该作者
/(.*)"(\w+)"(.*)>$/;
这个语句什么意思?
看不明白?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2007-05-25 11:37 |只看该作者
原帖由 Ecore 于 2007-5-25 11:26 发表
谢谢楼上的.
能不能用$&这个变量改写?

s/(?<=name=)"[^"]*"/$& id=$&/

论坛徽章:
0
9 [报告]
发表于 2007-05-25 11:54 |只看该作者
改成这句?
$arg =~ s /name=//;
$arg is what you want

论坛徽章:
0
10 [报告]
发表于 2007-05-25 12:02 |只看该作者
如果每行的格式都是楼主那么说的试试这个

open FL,"maplist.txt";
while (<FL>) {
s/(".*?")/$1 id=$1/;
print $_;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP