使用正则表达式可以很好地完成很多繁琐耗时的工作,以下抄录editplus正则表达式的使用,同样适用于notepad++。按《程序员修炼之道》 书中提到,熟练掌握一种文本编辑器,本人比较认同,所以有了这篇文章。\n\n因为Notepad++项目是基于另一个开源编辑器Scintilla,所有关于Scintilla 的正则表达式也同样适用Notepad++。\n\n第一部分:要开始用正则表达式前,必须了解特殊字符列\n\n正则表达式的特殊字符列表如下:\n\n.\n匹配任意字符\n(\n标记域的开始符(具体使用可参见例子)\n)\n标记域的结束符(具体使用可参见例子)\nn\nn可以是1到9 代表正在替换的第一到第九的标记域\n<\n匹配Scintilla定义的单词的开始\n>\n匹配Scintilla定义的单词的结束\nx\n转义符. 例如, [ 表示 [ 而不是字符集(character set)的开始符.\n[…]\n字符集(character set), 例如, [abc] 代表字符 a, b or c. 也可以使用范围, 如 [a-z] 代表所有小写字母\n[^…]\n非字符集中的字符. 例如, [^A-Za-z] 代表处理大小写字母以外的字符\n^\n行开始符\n$\n行尾符\n*\n匹配0次或多次. 例如, Sa*m 匹配 Sm , Sam , Saam , Saaam等等.\n+\n匹配1次或多次. 例如, Sa+m 匹配 Sam , Saam , Saaam and 等等.\n\n第二部分:五个例子\n\n例子1:\n目标:如何把 Fred2XXX 替换成 Sam2YYY\n技巧:搜索 Fred([1-9])XXX 替换成 Sam1YYY\n\n例子2:\n目标:把 == title == 替换成 = title =\n技巧:分两步:1, 搜索 ^=(=) 替换成 1 ;2, 搜索=(=)$ 替换成1。\n\n例子3:\n目标:把德国日期格式(dd.mm.yy) 转换成(yy-mm-dd)格式。\n技巧:搜索 ([^0-9])([0123][0-9]).([01][0-9]).([0-9][0-9])([^0-9]) 替换成14-3-25\n* 31.12.97 became 97-12-31\n* 14.08.05 became 05-08-14\n* the IP address 14.13.14.14 虽然匹配,但是要小心不要改变\n\n例子四:\n目标:在一个目录中通过命令 dir /b/s > filelist.txt,修改文件中的为/,并加上前缀file:///。\n技巧:分两步:1, 搜索 \ 替换为 / ;2, 搜索 ^(.*)$ 替换为 file:///1\n\n例子五:(英文原文中,这个例子有误,我这里修正了)\n目标:把文中的空格替换成,\n[Data]\nEU AX ALA 248 ?and Islands\nEU AL ALB 008 Albania, People’s Socialist Republic of\nAF DZ DZA 012 Algeria, People’s Democratic Republic of\nOC AS ASM 016 American Samoa\nEU AD AND 020 Andorra, Principality of\nAF AO AGO 024 Angola, Republic of\nNA AI AIA 660 Anguilla\nAN AQ ATA 010 Antarctica (the territory South of 60 deg S)\nNA AG ATG 028 Antigua and Barbuda\nSA AR ARG 032 Argentina, Argentine Republic\nAS AM ARM 051 Armenia\nNA AW ABW 533 Aruba\nOC AU AUS 036 Australia, Commonwealth of\n\n[Final Data]\nEU,AX,ALA,248,?and Islands\nEU,AL,ALB,008,Albania, People’s Socialist Republic of\nAF,DZ,DZA,012,Algeria, People’s Democratic Republic of\nOC,AS,ASM,016,American Samoa\nEU,AD,AND,020,Andorra, Principality of\nAF,AO,AGO,024,Angola, Republic of\nNA,AI,AIA,660,Anguilla\nAN,AQ,ATA,010,Antarctica (the territory South of 60 deg S)\nNA,AG,ATG,028,Antigua and Barbuda\nSA,AR,ARG,032,Argentina, Argentine Republic\nAS,AM,ARM,051,Armenia\nNA,AW,ABW,533,Aruba\nOC,AU,AUS,036,Australia, Commonwealth of\n\n技巧:搜索 ([A-Z]+) ([A-Z]+) ([A-Z]+) ([0-9]+) (.*) 替换为 1,2,3,4,5\n\n英文网址:http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Regular_Expressions\n译文地址:http://sesame.javaeye.com/blog/592388
Notepad++正则表达式
发表回复