免费注册 查看新帖 |

Chinaunix

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

如何使用正则表达式替换html文件里,Herf双引号中的空格 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-14 18:18 |只看该作者 |倒序浏览
各位达人,请问一下如何使用正则表达式,将Herf双引号内文件名中出现的空格批量替换成%20?
如:
<a herf "\link 1\1.htm">
<a herf "\path n\name x.htm">
...

论坛徽章:
0
2 [报告]
发表于 2012-01-14 21:18 |只看该作者
回复 1# kephort


    sed 's| |%20|g' yourfilehere

论坛徽章:
0
3 [报告]
发表于 2012-01-14 23:51 |只看该作者
  1. use strict;
  2. use warnings;

  3. my $str = "<a href=\"xxx xxx xxx xxx xxx\">
  4. <a href=\"xxx xxx xxx xxx xxx\">
  5. <a href=\"xxx xxx xxx xxx xxx\">
  6. <a href=\"xxx xxx xxx xxx xxx\">
  7. <a href=\"xxx xxx xxx xxx xxx\">
  8. <a href=\"xxx xxx xxx xxx xxx\">";

  9. my@str = $str =~ /<a href="([^>]+)">/g;
  10. print "\n==========================\n";
  11. foreach (@str)
  12. {
  13.         my $tmp = $_;
  14.         $tmp =~ s/\s/%20/g;
  15.         print "<a href=\"$tmp\">";
  16. }
复制代码
考虑的比较简单

论坛徽章:
0
4 [报告]
发表于 2012-01-15 10:43 |只看该作者
这种问题是先捕获一个结构,在这个结构中再捕获一个结构,然后进行正则替换。
捕获一个html源代码中的<a href= > 结构,然后在这个结构中捕获 "" 的结构,然后在其中进行空格替换。替换后的结果返回到html源代码中。

用Perl 进行这样的替换,需要用到正则表达式较高阶的功能。
在捕获一个结构后,对这个结构进行一个子程序(包含正则替换的子程序)处理。

如果用别的工具处理,可能会非常简单。

例如用vim g//s///g.
  1. $text =~ s/(?<href>\<a href=[^>]+\>)/replace($+{href})/ge;
  2. sub replace {
  3.      my $match = shift;
  4.      $match =~ s/ /\%20/g;
  5.       $match =~ s/a\%20href/a href/;
  6.       return $match;
  7. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP