正则表达式的功能非常强大,使用文本编辑器的过程中发现使用正则表达式进行替换非常方便,能完成许多普通的字符替换完成不了的效果,下面就是例子:
EmEditor文本编辑器中使用正则表达式进行替换的示例:
表达式 说明
[] 匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意数字.
[^] 匹配列表之外的任何单个字符. 例如, "[^ab]" 匹配 "a" 和 "b" 以外的字符. "[^0-9]" 匹配任意非数字字符.
[abxy0-6] 匹配abxy中任意一个字母或0-6任意一个数字
[^abxy0-6] 匹配除了abxy和0-6的任意一个字符
^ 其右边的表达式被匹配在一行的开始. 例如 "^A" 仅仅匹配以 "A" 开头的行.
() 影响表达式匹配的顺序,并且用作表达式的分组标记.
\ 转义字符. 如果你要使用 "" 本身, 则应该使用 "\".
. 匹配任意一个字符
\t 匹配tab
\n new line
\r return
\w word, 匹配任意一个字母(加上"_")
\W 匹配任意一个非字母
\s space, 匹配空格
\S 匹配非空格
\d digital,匹配任意一个数字
\D 匹配任意一个非数字
{n,m} 匹配n到m次
? 匹配0或1次,相当于 {0,1}其左边的字符被匹配0次或者1次. 例如 "be?" 匹配 "b" 或者 "be" 但是不匹配 "bee".
* 匹配0或多次,相当于 {0,}其左边的字符被匹配任意次(0次,或者多次). 例如 "be*" 匹配 "b", "be" 或者 "bee".
+ 匹配1或多次,相当于 {1,}其左边的字符被匹配至少一次(1次,或者多次). 例如 "be+" 匹配 "be" 或者 "bee" 但是不匹配 "b".
^ 匹配行首
$ 匹配行尾
\b boundary,匹配单词边界
| or
( ) 括号分组,用于后向引用
\1 \2 后向引用先前括号分组的表达式
\0 将引用上次的匹配结果
示例1
数据,将原始数据改为以逗号分隔:
原始数据:
TEXT 460011219411234 8615529880000
TEXT 460018827961234 8613178860000
TEXT 460015730611234 8618606850000
替换后数据:
TEXT,460011219411234,8615529880000
TEXT,460018827961234,8613178860000
TEXT,460015730611234,8618606850000
方法1、
查找: ([A-Z]+?)\s+(\d+?)\s+(\d+)
替换为: \1,\2,\3
方法2、
查找: ([^\s]+?)\s+
替换为: \1,
有的是"\1"、"\2",有的是"$1"、"$2",具体问题具体对待。
示例2
数据,将
与
便签去掉,只留下便签内的内容:原始数据:
M:标记符号(一般不会单独出现);
替换后数据:
M:标记符号(一般不会单独出现);
方法1、
查找:
([\s\S]*?)<\/p>
替换为: \1
方法2、
查找:
([\s\S]+?)<\/p>
替换为: \1
需要注意的是EmEditor查找多行数据需要设置下
EmEditor打开后搜索时在自定义里边吧.匹配换行符选中和.匹配换行符的行数改大后用那个正则匹配
示例3
数据,将href=""内的网址替换成统一的网址数据:
查找: href="([^"]+?)"或者href=\"(.+?)\"
替换为: href="${pubUrl!}"
注意这里不能用(.*)这个会匹配多余数据
示例4
调换逗号前后的数据:
"瑞秋","Rachel"
"钱德勒","Chandler"
"钱德","Chandler"
"乔伊","Joey"
"菲比","Phoebe"
查找:(".*?"),(".*?")
替换为:\2,\1
示例5
特殊字符:
^ ,$ ,( ) ,[ ] ,{ } ,. ,? ,+ ,*,|
这些字符都是在正则表达式中被“征用”了,称之为特殊字符,引用的时候,必须前面加 "\" 进行区分,比如你要用到 "$" 字符的时候,必须使用 "\$",这样程序才不会以为你是在匹配行尾。
删除带"[]"的内容;
[00:53.90][Monica]:There's nothing to tell!
[00:55.60][Monica]:He's just some guy I work with!
[00:57.90][Joey]:C'mon, you're going out with the guy!
[00:59.10][Joey]:There's gotta be something wrong with him!
查找:\ [ .*\ ] (用时请清除空格)
一些Emeditor常用的正则表达式技巧
^[ /t]+
查找以上字符,并替换为空,可删除行首空白(包括全半角空格和制表符)。
[ /t]+$
查找以上字符,并替换为空,可删除行末空白(包括全半角空格和制表符)。
^[ /t]+|[ /t]+$
查找以上正则表达式,并替换为空,可删除行首和行末所有空白(包括全半角空格和制表符)。
[[:unicode:]]
代表所有中文字符;
示例6,查找文字和http连接,替换成html标签
倾情礼赞新中国 喜迎妇女十一大|天辽地宁绽芳华 砥砺奋进谱华章 ——辽宁省妇联五年工作回顾之思想引领篇https://mp.weixin.qq.com/s/Q-G5BtmrHKd1jkj-LVaLHw
替换成
查找([\s\S]+?)(http.*)
替换为
去除空行
超找^[\s\t]*\n
其他
双引号包含的字符串 “.*?” [ ]包含的字符串 \ [ [ ^ \ [ ] * ? \ ](用时请清除空格) 变量名 [a-zA-Z_][a-zA-Z_0-9]* IP 地址 ([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}) 各行Tab以后的文字列 \t.*$ 行头插入 // Find: ^ Replace with: // 删除行头 // Find: ^// 删除行后的空白文字(包含空格和制表位 Space+Tab) Find: \s+?$ 将(abc)替换为[abc] Find: \((.*?)\) Replace: \[\1\] 将
替换为
Find:
Replace:
将9/13/2003替换为2003年9月13日 Find: ([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4}) Replace: \3年\1月\2日 将字母a-z替换为大写字母 Find: [a-z] Replace: \U\0 首字母大写 Find: ([a-zA-Z])([a-zA-Z]*) Replace: \U\1\L\2 平仮名ひらがなHiragana [\x{3041}-\x{309e}] 全角片仮名 全角カタカナFull-width Katakana [\x{309b}-\x{309c}\x{30a1}-\x{30fe}] 半角仮名 半角カナHalf-width Kana [\x{ff61}-\x{ff9f}] 中日韩 汉字CJK ideographs [\x{3400}-\x{9fff}\x{f900}-\x{fa2d}] 中日韩 汉字符号CJK ideograph marks [\x{3000}-\x{3037}] 韩国字符Hangul [\x{1100}-\x{11f9}\x{3131}-\x{318e}\x{ac00}-\x{d7a3}]