文章参照自: https://www.cnblogs.com/answer/archive/2010/03/29/1699751.html
介绍与基本语法
正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率。
notepad++的查找,替换,文件中查找支持以下的正则表达式:
表达式说明:
\t 制表符. (tab)
\n 新行.
. 匹配任意字符.
| 匹配表达式左边和右边的字符. 例如, “ab|bc” 匹配 “ab” 或者 “bc”.
[] 匹配列表之中的任何单个字符. 例如, “[ab]” 匹配 “a” 或者 “b”. “[0-9]” 匹配任意数字.
[^] 匹配列表之外的任何单个字符. 例如, “[^ab]” 匹配 “a” 和 “b” 以外的字符. “[^0-9]” 匹配任意非数字字符.
* 其左边的字符被匹配任意次(0次,或者多次). 例如 “be*” 匹配 “b”, “be” 或者 “bee”.
+ 其左边的字符被匹配至少一次(1次,或者多次). 例如 "[a-zA-Z0-9]+匹配所有字符和数字.
? 其左边的字符被匹配0次或者1次. 例如 “be?” 匹配 “b” 或者 “be” 但是不匹配 “bee”.
^ 其右边的表达式被匹配在一行的开始. 例如 “^A” 仅仅匹配以 “A” 开头的行.
$ 其左边的表达式被匹配在一行的结尾. 例如 “e$” 仅仅匹配以 “e” 结尾的行.
() 表达式匹配保留并分组,替换的时候\1表示第一个括号保留的内容.
\ 转义字符. 如果你要使用 “\” 本身, 则应该使用 “\\”.
#二 应用例子
例子1. 一个注册函数的实现如下
function register(name, funcname, paramNum, comment)
函数仅在本文件中以 self:register()的形式调用.
需求需要在paramNum和comment之间加一个参数,默认为false.
分析:
name, funcname类型为字符串,组成为大小写字母,数字和下划线.
paramNum类型为数字.
函数调用的一个例子如下: self:register(“call”, “Call”, 2, “同步调用”)
正则表达式匹配如下:
(self:registe("[ a-zA-Z0-9_]+", *"[ a-zA-Z0-9_]+", *[0-9] *, *[0-9] *,)(.)
替换如下:
[\1]false,[\2]
思路: 先匹配以self:registe(开头的行,然后匹配name参数,匹配逗号以及可能存在的0到多个空格,如此类推直到第三个参数,成为第一个保留参数. 余下的内容成为第二个保留参数.
替换的时候, 以[\n]代表获取第n个保留参数.
例子2.
输出项目中所有以lua为后缀的文件名.
思路就是要把相对路径部分去掉.
例如:
./hall/player.lua ==> player
./world/mail/mailsystem.lua ==> mailsystem
正则表达式如下:
.+/+([a-zA-Z0-9_]+).lua
先匹配点号,再尽量多地匹配/号,把文件名保留下来即可.