网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > 实用代码片段 > 正文

DreamweaverCS3/CS4正则表达式批量替换文件

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

  近来使用网站下载软件软件下载一个纯html的网站下载下来之后,发现里面多了好多的冗余信息,例如下面的片断…

  tppabs="/uploadfile/200904/20/A8213052669.gif" class="style4">youzw.com基础教程

  我现在想把整个页面下的所有以tppabs=开头的并以第一个”为终止符的属性删除,可是手工操作太慢,没有效率,而且还易出错。

  我第一个想到的就是使用搜索替换,可是什么软件的效率能最高呢?

  使用DreamweaverMX 的站点搜索替换功能。就是它,里面还有一个我们不会注意强大功能,使用正则表达式。呵呵,好了,我们的工具浮出水面,接下来就看怎么使用了!

  查看了一下资料,找到如下内容:正则表达式是以文本描述字符组合的模式。在代码搜索中使用它们有助于描述一些概念,例如“以‘var’开始的行”和“包含数字的属性值”。

  下表列出了在正则表达式中使用的特殊字符、其含义和用法示例。若要搜索包含该表中某一特殊字符的文本,请在特殊字符前面附加一个反斜杠,令其“转义”。例如,若要在 some conditions apply* 短语中搜索实际的星号,您的搜索模式应类似于:apply\*。如果您没有令星号转义,您将找到“apply”的所有匹配项(以及“appl”、 “applyy”和“applyyy”的所有匹配项),而不只是后面跟有星号的那些匹配项。

  字符 匹配 示例

  ^ 输入或行的起始部分。 ^T 匹配“This good?earth”中的“T”,但不匹配“Uncle?Tom's Cabin”中的“T”。

  $ 输入或行的结尾部分。 h$ 匹配“teach”中的“h”,但是不匹配“teacher”中的“h”

  * 0 个或多个前置字符。 um* 匹配“rum”中的“um”、“yummy”中的“umm”以及“huge”中的“u”

  + 1 个或多个前置字符。 um+ 匹配“rum”中的“um”和“yummy”中的“umm”,但在“huge”中没有任何匹配项

  ? 前置字符最多出现一次(即,指示前置字符是可选的)。 st?on 匹配“Johnson”中的“son”和“Johnston”中的“ston”,但在“Appleton”和“tension”中没有任何匹配项

  . 除换行符外的任何单字符。 .an 匹配短语“bran muffins can?be tasty”中的“ran”和“can”

  x|y x 或 y。 FF0000|0000FF 匹配 bgcolor=”#FF0000” 中的“FF0000”和 font color=”#0000FF” 中的“0000FF”

  {n} 恰好 n 个前置字符。 o{2} 匹配“loom”中的“oo”和“mooooo”中的前两个“o”,但在“money”中没有任何匹配项

  {n,m} 至少 n 个、至多 m 个前置字符。 F{2,4} 匹配“#FF0000”中的“FF”和“#ffffff”中的前四个“F”

  [abc] 用括号括起来的字符中的任何一个字符。用连字符指定某一范围的字符(例如, [a-f] 等效于 [abcdef])。   [e-g] 匹配“bed”中的“e”、“folly”中的“f”和“guard”中的“g”

  [^abc] 未在括号中括起来的任何字符。用连字符指定某一范围的字符(例如,[^a-f] 等效于[^abcdef])。 [^aeiou] 最初匹配“orange”中“r”、“book”中的“b”和“eek!”中的“k”

  \b 词边界(例如空格或回车符)。 \bb 匹配“book”中的“b”,但在“goober”和“snob”中没有任何匹配项

  \B 词边界之外的任何内容。 \Bb 匹配“goober”中的“b”,但在“book”中没有任何匹配项

  \d 任何数字字符。等效于 [0-9]。 \d 匹配“C3PO”中的“3”和“apartment 2G”中的“2”

  \D 任何非数字字符。等效于 [^0-9]。 \D 匹配“900S”中的“S”和“Q45”中的“Q”

  \f 换页符。

  \n 换行符。

  \r 回车符。

  \s 任何单个空白字符,包括空格、制表符、换页符或换行符。 \sbook 匹配“blue book”中的“book”,但在“notebook”中没有任何匹配项

  \S 任何单个非空白字符。 \Sbook 匹配“notebook”中的“book”,但在“blue book”中没有任何匹配项

  \t 制表符。

  \w 任何字母数字字符,包括下划线。等效于 [A-Za-z0-9_]。 b\w* 匹配“the barking dog”中的“barking”以及“the big black dog”中的“big”和“black”

  \W 任何非字母数字字符。等效于 [^A-Za-z0-9_]。 \W 匹配“Jake&Mattie”中的“&”和“100%”中的“%”

  使用括号在正则表达式内分隔出以后要引用的分组。然后在“替换”域中使用 $1、$2、$3 等来引用第一个、第二个、第三个和更后面的括号分组。

  如:替换"/main.asp?classid=286"替换成"class(286)"

  查找:/main.asp\?classid=(\d+)

  替换:class($1)

  注意:在“查找内容”文本框中使用 \1、\2、\3 等(而不是 $1、$2、$3)来引用正则表达式中更早的括号分组。

  下面是我使用的正则表达式。很好用:

  \btppabs="h[^"]*"

  然后进行搜索替换操作就OK了!

  如此多的代码最好的办法就是匹配替换了。网上搜索了一下,发现竟然有位老兄遇到跟我一样的问题,按照他的办法,可以通过Dreamweaver的正则表达式匹配进行替换。在Dreamweaver的帮助里可以找到正则表达式中使用的特殊字符列表。

  根据列表写出上面两句冗余代码的匹配是:

  匹配tppabs标签:

  \btppabs="h[^"]*"

  匹配javascript代码:

  href="javascript:if\(confirm\('htt[^"]*"

  然后再根据自己的需要替换就行好了。真是很方便!

  /////////////////////////////////////////////////////////////////

  查找href="************"的表达式:\bhref="http\S*\b"

  ----------------------------------------------------------------------------------------------------------------------

  匹配中文字符的正则表达式: [\u4e00-\u9fa5]

  匹配双字节字符(包括汉字在内):[^\x00-\xff]

  应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

  String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

  匹配空行的正则表达式:\n[\s| ]*\r

  匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

  匹配首尾空格的正则表达式:(^\s*)|(\s*$)

  String.prototype.trim = function()

  {

  return this.replace(/(^\s*)|(\s*$)/g, "");

  }

  利用正则表达式分解和转换IP地址:

  下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:

  function IP2V(ip)

  {

  re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式

  if(re.test(ip))

  {

  return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1

  }

  else

  {

  throw new Error("Not a valid IP address!")

  }

  }

  不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

  var ip="10.100.20.168"

  ip=ip.split(".")

  alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

  匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

  匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

  利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不正确,原因见红色字体]

  var s="abacabefgeeii"

  var s1=s.replace(/(.).*\1/g,"$1")

  var re=new RegExp("["+s1+"]","g")

  var s2=s.replace(re,"")

  alert(s1+s2) //结果为:abcefgi

  ===============================

  如果var s = "abacabefggeeii"

  结果就不对了,结果为:abeicfgg

  正则表达式的能力有限

  我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。

  得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为2008

  s=http://www.youzw.com/2008.htm

  s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")

  alert(s)

  利用正则表达式限制网页表单里的文本框输入内容:

  用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

  用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

  用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

  用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

  • 上一篇资讯: 给页面加热键
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师