正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它能很好提高工作效率。
虽然EditPlus支持正则表达式,但EditPlus对正则表达式的支持有限,其使用方法也不完全等同于编程语言中的用法,比如,EditPlus不支持重复频度的定义,如:{3}、{3,}、{3,6},大家在使用过程中还要加以注意。
下面整理了EditPlus查找或替换时支持的元字符:
元字符 | 描述 |
\t | 制表符 |
\n | 新行 |
. | 匹配任意字符 |
| | 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc" |
[] | 匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意数字 |
[^] | 匹配列表之外的任何单个字符.例如, "[^ab]" 匹配 "a" 和 "b" 以外的字符. "[^0-9]" 匹配任意非数字字符 |
* | 其左边的字符被匹配任意次(0次,或者多次). 例如 "be*" 匹配 "b", "be" 或者 "bee" |
+ | 其左边的字符被匹配至少一次(1次,或者多次). 例如 "be+" 匹配 "be" 或者 "bee" 但是不匹配 "b" |
? | 其左边的字符被匹配0次或者1次. 例如 "be?" 匹配 "b" 或者 "be" 但是不匹配 "bee" |
^ | 其右边的表达式被匹配在一行的开始.例如 "^A" 仅仅匹配以 "A" 开头的行 |
$ | 其左边的表达式被匹配在一行的结尾. 例如 "e$" 仅仅匹配以 "e" 结尾的行 |
() | 影响表达式匹配的顺序,并且用作表达式的分组标记 |
\ | 转义字符. 如果你要使用 "\" 本身, 则应该使用 "\\" |
表达式的分组使用()来标记。表达式的分组可以被引用为 \0, \1, \2, \3, 等等。\0 表示被匹配的所有字符串,\1 表示被匹配的第一个分组, \2 表示第二个分组,依此类推。 举例如下:
原文 查找 替换 结果 abc (ab)(c) \0-\1-\2 abc-ab-c abc a(b)(c) \0-\1-\2 abc-b-c abc (a)b(c) \0-\1-\2 abc-a-c
正则表达式应用示例
此处我们练习的是EditPlus的正则查找替换功能,所以打开“查找”或“替换”窗口时,要把“正则表达式”勾选上。
1.替换指定内容到行尾
原始文本如下面两行
abc aaaaa 123 abc 444
希望每次遇到“abc”,则替换“abc”以及其后到行尾的内容为“abc efg”,即上面的文本最终替换为:
abc efg 123 abc efg
操作步骤:
在“查找(I):”内容里输入abc.*
“替换为:”里面输入abc efg
同时勾选“正则表达式”复选框,然后点击“全部替换”按钮。
其中,符号的含义如下:
“.” =匹配任意字符
“*” =匹配0次或更多
数字替换
希望把
asdadas123asdasdas456asdasdasd789asdasd
替换为:
asdadas[123]asdasdas[456]asdasdasd[789]asdasd
操作步骤:
在“查找(I):”内容里面输入[0-9][0-9][0-9]
“替换为:”里面输入[\0\1\2]
或者查找内容输入[0-9]+
替换内容输入[\0],点击“全部替换”。
删除每一行行尾的指定字符
因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现,比如
12345 1265345 2345
需要删除每行末尾的“345”
操作步骤:
在查找内容里面输入345$替换内容栏什么也不填写,点击全部替换。这里“$”表示从行尾匹配,如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串:
a. 选择要操作的行
b. 编辑-格式-删除行注释
c. 在弹出对话框里面输入要清除的行首字符,确定
删除空行
空行仅包括空格符、制表符、换行符(Unix 系统里,每行结尾只有“换行”,即“\n”;Windows系统里面,每行结尾是“ 回车换行”,即“\r\n”;Mac系统里,每行结尾是“回车”。一个直接后果是,Unix/Mac系统下的文件在Windows里打 开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。),且必须以这三个符号之一作为一行的开头,并且以回车符结尾,查找空行的关键是构造代表空行的正则表达式。
操作步骤:
在查找内容栏输入内容^[ \t]+\n
替换栏不填写内容
点击全部替换(注意\t前方有一个半角空格字符);如果空行内存在全角空格,则用^[ \t ]+\n进行替换(注意\t前方是半角空格,后方是全角空格,三者顺序随意)。
以空格开头,到每行结尾处的内容都除掉
原内容:
,Address varchar(200) ,PlusFee decimal(24, 8)
查找内容(注意[前方有一个半角空格)
[^\n]+\n
替换内容
\n
替换结果如下:
,Address ,PlusFee
注意:原内容的最后一行是空白行,否则查找内容应该写为:[^\n]+(\n|$)
这样替换完后会增加一个空白行。
除掉以字符串指定字符串abc开头的行
原内容:
1 abc123 t 2 abc456 3
查找内容^abc[^\n]+\n替换内容为空,替换结果如下:
1 2 3
删掉多余的空白行
原内容:
1 2 3
查找内容[\n]+
替换内容\n
替换结果如下:
1 2 3
除掉以字符串“abc”开头,以字符串“=”结尾的部分
原内容:
abc1=A abc2=B
查找内容abc[^=]+=
替换内容为空
替换结果如下:
A B
除掉每行从开头到以字符串“.”结尾的部分
原内容:
a00.1 B00.2
查找内容^.+\.
替换内容为空
替换结果如下:
1 2
注意:“.”是正则表达式里面的特殊符号,所以用了斜杠符。
在字符串“,row1”下面加新行“,row2”
原内容:
,row1 ,x1 ,row1 ,x1
查找内容,row1\n
替换内容,row1\n ,row2\n
或者:
查找内容\t,row1\n
替换内容\t,row1\n\t,row2\n
替换结果如下:
,row1 ,row2 ,x1 ,row1 ,row2 ,x1
每行开头加个“.”
原内容:
1 2
查找内容^
替换内容.
替换结果如下:
.1 .2
将文本换行替换为<p>标签的正则表达式
查找内容^(.+)$
替换内容<p>\1</p>
评论已关闭!