作者:碎蜂CYM夜一 | 来源:互联网 | 2023-10-11 19:46
不知大家有没试过这样的经历:想替换一些有固定规律文本,但又不是想全部替换掉原来的内容。只是想替换掉其中的一部分,而保留一部分。例如,文本“aaaDSSDaabbbbbbbbbbbb
不知大家有没试过这样的经历:想替换一些有固定规律文本,但又不是想全部替换掉原来的内容。只是想替换掉其中的一部分,而保留一部分。例如,文本“ #DSSDaabbbbbbbbbbbbbbXXX”,我只是想把所有包含这个文本的页面替换成“原来的文本”,即保留原来区域的内容。以前遇到过这样的情况,不知道该怎么做,上网搜过,也没搜到。今天试了一下,行了。所以就把它写出来,分享一下,希望能有点作用。
没错,就是用正则表达式。但一般的文本替换工具不支持正则表达式的查找与替换。手动改的话,如果页面少的话还勉强,但如果是50个甚至更多的页面都要改呢?呵,,吐血行了。幸好,Dreamweaver给我们提供了强大正则查找替换功能。它不仅能批量替换普通文本,而且还能灵活应用正则表达式进行批量替换。
那要怎样支替换呢?以开始那个例子说明(注:我用的是Adobe Dreamweaver CS3):
1.打开“查找和替换”对话框
2.在“查找范围”选项中选择“文件夹”,然后选择要进行批量替换的文件夹(当然,也可以选择“当前文档”)
3.在“查找”中加入: ([A-z]*)
4.在“替换”中加入:$1
5.在“选项”中选择“使用正则表达式”(请注意,一定要选择这个哦)
6.单击“全部替换”就行了。
分析:
整个过程中,最重要是第三和第四步。在第三步中,用到了正则 ([a-z]*)。这是什么意思呢?根据正则语法:
(pattern)–匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在Vbscript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。注意,在Dreamweaver中是从$1开始的。
[xyz] — 匹配所包含的任意一个字符。[A-z]就表示匹配任意大小写英文字符。
* — 匹配前面的子表达式零次或多次,在本例中就是匹配[a-z]零次或多次。
整个表达式([A-z]*)就表示:匹配任意多个连续的大小写英文字符,并且所产生的区配可以从Matches中得到。
由上面的解释,很容易就能知道,第四步中的$1代表的是Matches集合中的第一个匹配。在本例中也就是任意多个连续的英文字符。至于详细的正则表达式语法,可以到网上查找,或许下个 Javascript.chm里面也能找到,我在这里就不展开了。
另外,说来也搞笑,刚学正则的时候,总是不知道怎样匹配 任意文本。后来经过一番研读,终于给匹配出来了,其实说来也很简单,不就是任意非空白字符和空白字符的组合嘛:([/s/S]*)
还有要提醒一下大家的是,如果要进行上面的那种标签形式,Dreamweaver还提供了另外一种更为直观的方法,具体我也不多话,在“查找和替换”的“搜索选项中选择“指定标签”就会看到。
总结:Dreamweaver提供了非常强大的查找与替换功能。灵活的运用它提供的各种方法,将会给工作带来更多的便利。