《notepad正则表达式替换字符串详解》由会员分享,可在线阅读,更多相关《notepad正则表达式替换字符串详解(12页珍藏版)》请在金锄头文库上搜索。
1、notepad+正则表达式替 换字符串详解 2010-08-30 14:21正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率。 EditPlus 的查 找,替换,文件中查找支持以下的正则表达式: 表达式 说明 t 制表符. n 新行. . 匹配任意字符. | 匹配表达式左边和右边的 字符. 例如, ab|bc 匹配 ab 或者 bc . 匹配列表之中的 任何单个字符. 例如, ab 匹配 a 或者 b. 0-9 匹配任意数字. 匹配列表之外的任何单个字符. 例如, ab 匹配 a
2、 和 b 以外的字符. 0-9 匹配任意非数字字符. * 其左边的字符被匹配任意次(0 次,或者多次). 例如 be* 匹配 b, be 或者 bee. + 其左边的 字符被匹配 至少一次(1 次,或者多次). 例如 b e+ 匹配 be 或者 bee 但是不匹配 b. ? 其左边的字符被匹配 0 次或者 1次. 例如 be? 匹配 b 或者 be 但是不匹配 b ee. 其右边的表达式被匹配在一行的开始. 例如 A 仅仅匹配以 A 开头的行. $ 其左边的表达式被匹配在一行的结尾. 例如 e$ 仅仅匹配以 e 结尾的行. () 影响表达式匹配的 顺序,并且用作表达式的分组标记. 转义字符.
3、如果你要使用 本身, 则应该使用 . 例子: 原始串 str1abc991; str2abc992; str11abc993; str22abc994; str111abc995; str222abc996; str1111abc997; str2222abc999; 目标串: abc1; abc2; abc11; abc22; abc111; abc222; abc1111; abc2222; 处理: 查找串:str(0-9+) abc0-9+ 替换串:abc1 【1】正则表达式应用替换指定内容到行尾 原始文本如下面两行 abc aaaaa 123 abc 444 希望每次遇到“ abc”,
4、则替换“abc” 以及其后到行尾的内容为“abc efg” 即上面的文本最终替换为: abc efg 123 abc efg 解决: 在替换对 话框,查找内容里输入 “abc.*” 同时勾选 “正则表达式 ”复选框,然后点击“全部替换” 按钮 其中,符号的含义如下: “.” 匹配任意字符 “*” 匹配 0 次或更多 注意:其实就是正则表达式替换,这里只是把一些曾经提出的问题加以整理,单纯从正则表达式本身来说,就可以引申出成千上万种特例。 【2】正则表达式应用数字替换 希望把 asdadas123asdasdas456asdasdasd789asdasd 替换为: asdadas123asdas
5、das456asdasdasd789asdasd 在替换对话框里面,勾选“正则表达式” 复选框; 在查找内容里面输入“ 0-90-90-9”,不含引号 “替换为:”里面输入“012”,不含引号 范围为你所操作的范围,然后选择替换即可。 实际上这也是正则表达式的使用特例,“0-9”表示匹配 09 之间的任何特例,同样“a-z ”就表示匹配 az 之间的任何特例 上面重复使用了“0-9”,表示连续出现的三个数字 “0”代表第一个“0-9”对应的原型,“1”代表第二个“0-9” 对应的原型,依此类推 “”、 “”为单纯的 字符,表示 添加“”或“”,如果输入 “其它012 其它”,则替换结果为: a
6、sdadas 其它 123 其它 asdasdas 其它 456 其它 asdasdasd 其它789 其它asdasd 功能增强(by jiuk2k): 如果将查找内容“0-90-90-9”改为“0-9* 0-9”,对应 1 或 123 或 12345 或 大家根据需要定制 相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下 【3】正则表达式应用删除每一行行尾的指定字符 因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现 比如 12345 1265345 2345 需要删除每行末尾的“345” 这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提
7、出,说明对正则表达式还得有个认识过程,解决方法如下 解决: 在替换对话框中,启用“ 正 则表达式” 复选框 在查找内容里面输入“345$” 这里“$”表示从行尾匹配 如果从行首匹配,可以用“”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串 a. 选择要操作的行 b. 编辑格式删除行注释 c. 在弹出对话框里 面输入要清 除的行首字符,确定 【4】正则表达式应用替换带有半角括号的多行 几百个网页中都有下面一段代码: n 在替换对话框启用“ 正则表达式 ”选项,这时就可以完成替 换了 【5】正则表达式应用删除空行 启动 EditPlus,打开待处理的文本类型文件。 、选择
8、“查找”菜单的“替换”命令,弹出文本替换对话框。选中“正则表达式” 复选框,表明我们要在查找、替换中使用正则表达式。然后,选中“替换范围” 中的“当前文件”,表明对当 前文件操作 。 、单击“查找内容”组合框右侧的按钮,出现下拉菜单。 、下面的操作 添加正则表 达式,该表达式代表待 查找的空行。(技巧提示:空行仅包括空格符、制表符、回车符,且必须以这三个符号之一作为一行的开头,并且 以回车符结尾,查找空行的关键是构造代表空行的正则表达式)。 直接在”查找 ”中输入正则 表达式“ t*n”,注意t 前有空格符。 (1)选择“从 行首开始匹 配” ,“查找内容”组合框中出现 字符“” ,表示待查找
9、字符串必须出现在文本中一行的行首。 (2)选择“字符在 范围中 ”,那么在“”后会增加一对括号“” ,当前插入点在括号中。括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符 即符合查找条件。 (3)按一下空格键,添加空格符。空格符是空行的一个组成成分。 (4)选择“制 表符” ,添加代表制表 符的“t”。 (5)移动光标,将当前插入点移到“”之后,然后选择“匹配 0 次或更多”,该操作会添加星号字符“* ”。星号表 示,其前面的括号“”内的空格符或制表符,在一行中出现 0 个或多个。 (6)选择“换行 符” ,插入 “n”,表示回车符。 、“ 替换为”组合框保持空,表示删除查找到的内容
10、。单击“替换” 按钮逐个行删除空行,或单击“ 全部替换”按钮删除全部空行(注意 :EditPlus 有时 存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。 1.在汉化的时候,是否经常碰到这样的语句需要翻译: Code: “Error adding the post!”; “Error adding the comment!”; “Error adding the user!”; 如果有很多类似的文件一个一个翻译显然很累而且感觉很无聊。 其实可以这样处理,在 Editplus 里面用 替换 功能,在替换对话框选中“正则表达式”复选框: 查找原文件: Code:
11、 “Error adding (!|;*) 替换成: Code: “在增加1 时发生错误 这样替换之后发生了什么?结果是: Code: “在增加 the post 时发生错 误!”; “在增加 the comment 时发生错误!”; “在增加 the user时发生错误!”; ok,接下来你会怎么做?当然再替换一次把 the post、the comment、the user 替换成你要翻译的词。得到最后的结果: Code: “在增加帖子时发生错 误!”; “在增加评论时发 生错误!”; “在增加用户 时发生错误!”; 2.要提取的单词在中间,比如: Code: can not be del
12、eted because can not be added because can not be updating because 可以用这种方式: 在 Editplus 里面用 替换 功能,在替换对话框选中“正则表达式”复选框: 查找原文件: Code: can not be ( *) because 替换成: Code: 无法被1 因为 这样替换之后发生了什么?结果是: Code: 无法被deleted 因为 无法被added因为 无法被 updating 因为 其余步骤如上。 在汉化量很大而且句式比较单调的情况下对效率的提高很明显! 解释一下:(!|; *) 的意 思是 不等于 ! 和
13、” 和 ; 中的任 何一个,意思就是这 3个字符之外的所有字符将被选中(替换区域); 1 即被选中的替换区域所在的新位置(复制到这个新位 置)。 3.经常手工清理一行一行地删除文本文件里面的空白行,其实可以交给 Editplus 更好的完成,在 Editplus 里面用替换功能,在替换对话框选中 “正则表达式”复选框: 查找原文件: Code: t*n 替换部分为空就可以删除空白行了,执行一下看看:) abandon2b9nd2nv.抛弃,放弃 abandonment2b9nd2nm2ntn.放弃 abbreviation2bri:viei62nn.缩写 abeyance2bei2nsn.缓办
14、, 中止 abide2baidv.遵守 ability2bilitin.能力 ableeibladj.有能力的,能干的 abnormal9bn0:m2ladj.反常的,变态的 aboard2b0:dadv.船(车) 上 1. 查找: (a -zA-Z0-0-+)(*.*+)(.*) 替换: ”1,” 2,”3, 效果: ”abandon”,”2b9nd2n“,”v.抛弃,放弃”, ”abandonment”,”2b9nd2nm2nt“,”n.放弃”, ”abbreviation”,”2bri:viei62n“,”n.缩写”, ”abeyance”,”2bei2ns“,”n.缓办,中止”, ”abide”,”2baid“,”v.遵守”, ”ability”,”2biliti“,”n.能力”, ”able”,”eibl“,”adj.有能力的,能干的”, ”abnormal”,”9bn0:m2l“,”adj.反常的,变 态的”, ”aboard”,”2b0:d“,”adv.船(车)上”, 2. 查找: n 替换: 注: 要次替换内容为空 效果: ”abandon”,”2b9nd2n“,”v.抛弃,放弃 ”,”abandonm ent”,”2b9nd2nm2nt“,”n.放弃 ”, ”abbreviation”,”2bri:viei62n“,”n.缩写 ”,”abeyance”,