notepad++ 正则表达式

Notepad++ 与正则表达式使用

来源:互联网  作者:佚名  时间:01-03 18:25:26  【大 中 小】
点评:Notepad++ 是一款自由的编辑器,适合编辑各种源代码,也可作为替代记事本的工具。
它与前日提到的 SciTE 都使用了 Scintilla 作为编辑组件,在 Windows 平台的自由文本编辑器中可谓出类拔萃。其特色于官方网站介绍详尽,图文并茂,此处不再赘述。 
  昨天卖了个关子,今天就在此略微探讨一下 正则表达式。 
  眼下已经有了各公司的代码文件,000002、000006……排成一列,要想变成 <a href="网页地址?code=公司代码">公司代码</a>,该如何做呢?为了简便起见,就用 URL 三个字符代替网页地址。 
  用 Notepad++ 打开公司代码文件,把光标移至开头(快捷键为 Ctrl+Home),选择 Search 菜单中的 Replace...(快捷键为 Ctrl+H),打开 Replace 对话框。在 Find what 中输入“(.+)”(没有引号,而且都是半角符号),在 Replace with 中输入“<a href="URL?code=\1">\1</a>”,切记要选择 Regular expression 选项,然后按 Replace All 按钮。几百行公司代码转瞬间就会被替换成所需的格式。 
  那么,为什么用“(.+)”就可以选择一行代码呢? “\1”又是做什么的呢? 
  首先需要说明一点,Notepad++ 的 正则表达式是以行为单位的。在查找表达式中,“.”表示任意字符;“+”表示匹配 1 次或多次,比如,ab+c 可以匹配 abc,abbc,abbbc 等;圆括号“(”和“)”分别为匹配区域的起始和结束。由此可知,“(.+)”可以匹配任何一行内容。 
  在替换表达式中,“\1”表示第一个匹配区域所匹配的内容,依此类推,“\n”表示第 n(可取 1-9)个匹配区域所匹配的内容。将匹配的内容代入,就得到了所需的格式。通过“\n”可以改变查找字符串的顺序,并创造出新的组合,大有用处。 
   正则表达式极为灵活,要做此事还有许多其他方法。比如,在查找处可以输入“[0-9]+”,亦可达到同样的效果。这里方括号“[]”表示符号集合,“[0-9]”表示 0 至 9 这十个数字中的任何一个,而“[0-9]+”则表示全部为数字的一行。 
   正则表达式功能强大,若能恰当使用,可事半功倍。有兴趣的话,可以参考一下 Notepad++ 的 正则表达式帮助。


notepad++学习笔记 之 正则表达式(原创、翻译)

    博客分类: 
  • 编程工具
正则表达式

 

 

按《程序员修炼之道》 书中提到,熟练掌握一种文本编辑器,本人比较认同,所以有了这篇文章。

 

因为Notepad++项目是基于另一个开源编辑器Scintilla,所有关于Scintilla 的正则表达式也同样适用Notepad++。

 


第一部分:要开始用正则表达式前,必须了解特殊字符列  

 

正则表达式的特殊字符列表如下: 
.  
    匹配任意字符
(  
    标记域的开始符(具体使用可参见例子)
)  
    标记域的结束符(具体使用可参见例子)
\n
    n可以是1到9 代表正在替换的第一到第九的标记域
\<
    匹配Scintilla定义的单词的开始
\>
    匹配Scintilla定义的单词的结束
\x
    转义符. 例如, \[ 表示 [ 而不是字符集(character set)的开始符. 
[...]
    字符集(character set), 例如, [abc] 代表字符 a, b or c. 也可以使用范围, 如 [a-z] 代表所有小写字母 
[^...]
    非字符集中的字符. 例如, [^A-Za-z] 代表处理大小写字母以外的字符 

    行开始符
$
    行尾符
*
    匹配0次或多次. 例如, Sa*m 匹配 Sm , Sam , Saam , Saaam等等. 
+
    匹配1次或多次. 例如, Sa+m 匹配 Sam , Saam , Saaam and 等等. 


第二部分:五个例子 

例子1:
目标:如何把 Fred2XXX 替换成 Sam2YYY
技巧:搜索 Fred([1-9])XXX 替换成 Sam\1YYY

例子2:
目标:把 == title == 替换成 = title =
技巧:分两步:1, 搜索 ^=(=) 替换成 \1 ;2, 搜索=(=)$ 替换成\1。

例子3:
目标:把德国日期格式(dd.mm.yy) 转换成(yy-mm-dd)格式。
技巧:搜索 ([^0-9])([0123][0-9])\.([01][0-9])\.([0-9][0-9])([^0-9]) 替换成\1\4-\3-\2\5
    *  31.12.97 became 97-12-31
    * 14.08.05 became 05-08-14
    * the IP address 14.13.14.14 虽然匹配,但是要小心不要改变

例子四:
目标:在一个目录中通过命令 dir /b/s > filelist.txt,修改文件中的\为/,并加上前缀file:///。
技巧:分两步:1, 搜索 \\ 替换为 /  ;2, 搜索 ^(.*)$  替换为 file:///\1

例子五:(英文原文中,这个例子有误,我这里修正了) 
目标:把文中的空格替换成, 
[Data]
EU AX ALA 248 ?and Islands
EU AL ALB 008 Albania, People's Socialist Republic of
AF DZ DZA 012 Algeria, People's Democratic Republic of
OC AS ASM 016 American Samoa
EU AD AND 020 Andorra, Principality of
AF AO AGO 024 Angola, Republic of
NA AI AIA 660 Anguilla
AN AQ ATA 010 Antarctica (the territory South of 60 deg S)
NA AG ATG 028 Antigua and Barbuda
SA AR ARG 032 Argentina, Argentine Republic
AS AM ARM 051 Armenia
NA AW ABW 533 Aruba
OC AU AUS 036 Australia, Commonwealth of

[Final Data]
EU,AX,ALA,248,?and Islands
EU,AL,ALB,008,Albania, People's Socialist Republic of
AF,DZ,DZA,012,Algeria, People's Democratic Republic of
OC,AS,ASM,016,American Samoa
EU,AD,AND,020,Andorra, Principality of
AF,AO,AGO,024,Angola, Republic of
NA,AI,AIA,660,Anguilla
AN,AQ,ATA,010,Antarctica (the territory South of 60 deg S)
NA,AG,ATG,028,Antigua and Barbuda
SA,AR,ARG,032,Argentina, Argentine Republic
AS,AM,ARM,051,Armenia
NA,AW,ABW,533,Aruba
OC,AU,AUS,036,Australia, Commonwealth of

技巧:搜索 ([A-Z]+) ([A-Z]+) ([A-Z]+) ([0-9]+) (.*)  替换为 \1,\2,\3,\4,\5

 

原始网址:How to use regular expressions in Notepad++


你可能感兴趣的:(notepad++ 正则表达式)