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++ 的正则表达式帮助。