EditPlus正则表达式查找替换功能的学习

原创 zhaoliang  2017-04-21 17:40  阅读 638 views 次

正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它能很好提高工作效率。EditPlus

虽然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的正则查找替换功能,所以打开“查找”或“替换”窗口时,要把“正则表达式”勾选上。

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>

EditPlus为文本行添加p标签

本文地址:http://blog.58cm.cn:8088/archives/411.html
版权声明:本文为原创文章,版权归 zhaoliang 所有,欢迎分享本文,转载请保留出处!

评论已关闭!