《UltraEdit 编辑器之正则表达式(高级查找与替换)》
- 1 查找和替换时开启正则表达式
- 2 正则表达式关键字
- 3 常用操作
- 3.1 替换空行
- 3.2 替换行尾空格
- 3.3 替换行首空格
- 3.4 替换数字0-9
- 3.5 替换空格前内容
- 3.5 替换空行或仅含有空格TAB键的行
- 3.6 末尾加分号
- 4 其他参考(非正文)
1 查找和替换时开启正则表达式
查找:Ctrl + F
替换:Ctrl + R
2 正则表达式关键字
% | $ | ? | * |
---|---|---|---|
行首 | 行尾 | 任意单个字符(除换行符外) | 任意字符出现任意次数(除换行符外) |
+ | ++ | ^b |
---|---|---|
前导字符或者表达式出现一次或者更多次 | 前导字符或者表达式不出现或者出现一次以上 | 页中断符 |
^p | ^r | ^n |
---|---|---|
DOS文件的换行符 | MAC文件的换行符(CR Only) | UNIX文件的换行符 (LF Only) |
^t | [ ] |
---|---|
一个制表符 | 方括号中的单个的字符 |
3 常用操作
3.1 替换空行
%[ ^t]++^p
3.2 替换行尾空格
[ ^t]+$
3.3 替换行首空格
%[ ^t]+
3.4 替换数字0-9
[0-9]
3.5 替换空格前内容
%*[ ^t]
3.5 替换空行或仅含有空格TAB键的行
%[ ^t]++^p
3.6 末尾加分号
将 $ 替换为 ;
4 其他参考(非正文)
参考文章1:UE正则表达式使用
参考文章2:UE正则表达式使用
部分内容摘要(未实验核实是否可行):
m?n 匹配“man”、“men”、“min”,但不匹配“moon”。
t*t 匹配“test”、“tonight”和“tea time”中的“tea t”部分,但不匹配“tea
time” (“tea ”和“time”之间有换行)。
Te+st 匹配“test”、“teest”、“teeeest”等,但不匹配“tst”。
[aeiou] 匹配每个元音小写字母
[,.?] 匹配文字“,”、“.”或“?”。
[0-9a-z] 匹配任何数字或小写字母
[~0-9] 匹配除数字外的任何字符 (~ 表示不匹配其后的内容)
你可以搜索象下面一样的表达式 A 或 B:
"^{John^}^{Tom^}
这将搜索 John 或 Tom。在两个表达式之间应该没有任何其它内容。
你可以在同一次搜索象下面一样组合 A 或 B 和 C 或 D:
"^{John^}^{Tom^} ^{Smith^}^{Jones^}"
这将搜索后面跟随了 Smith 或 Jones 的 John 或 Tom。
下面的表显示“Unix”样式的正则表达式语法。
正则表达式 (Unix 语法):
内容摘要2:
m.n 匹配 “man”,”men”,”min” 但不匹配 “moon”.
t+t 匹配 “test”,”tonight” 和 “tea time” (the “tea t” portion) 但不匹配 “tea
time” (newline between “tea ” and “time”).
Te*st 匹配 “test”,”teest”,” teeeest “等等。但是不匹配 “tst”。
[aeiou] 匹配每个小写元音。
[,.?] 匹配一文字的 “,”,”.”或 “?”。
[0-9,a-z] 匹配任何数位,或小写字母。
[^0-9] 除了数字以外匹配任何字符 (~ 意味着”不”)
你按如下方式可以查找一个表达式A或 B :
“(John)|(Tom)”
这将在找John或Tom的出现。应该在 2 个表达式之间没有任何东西。
你可以在同一搜索中按如下方式组合A or B and C or D:
“(John|Tom) (Smith|Jones)”
这将在John or Tom 后面找 Smith or Jones。
另外:
p 匹配 CR/LF ( 作为 rn 的一样 ) 作为DOS行结束符匹配
如果查找/替换功能中正则表达式没有选用,则替换字段中下列字符也是有效的:
符号 功能
^^ 匹配一个 “^” 字符
^s 替换为被选择 ( 加亮 ) 活跃的文件窗口的文章。
^c 替换为剪贴板的内容
^b 匹配一个页裂缝
^p 匹配一个换行符 ( CR/LF )( 段 )( DOS 文件)
^r 匹配一个换行符 ( CR 仅仅 )( 段 )( MAC 文件)
^n 匹配一个换行符 ( LF 仅仅 )( 段 )( UNIX 文件)
^t 匹配一个标签TAB字符
下面是我要实现的一段代码查询替换的举例
我想把一个.lrc文件中的汉字去掉:
[ti:046]
[ar:Book I]
[al:english900]
[la:zh]
[by:]
[00:00.00][4] Identifying objects.辨别物品
[00:00.00]
[00:00.01]What are these? 这些是什么?
[00:01.93]Those are books. 那些是书。
[00:03.87]Where are the books? 那些书在哪儿?
[00:06.13]There they are. 在那儿。
[00:08.68]These are my pencils. 这些是我的铅笔。
[00:12.00]Where are your pens? 你的那些钢笔在哪儿?
[00:14.85]They're over there. 在那里。
[00:17.48]Are these your pens? 这些是你的钢笔吗?
[00:20.04]Yes,they are. 是我的。
[00:22.63]Those are mine. 那些是我的。
[00:25.39]These are your books,aren't they? 这些书是你的,对不对?
[00:28.35]No,they aren't. 不,不是。
[00:31.07]They're not mine. 不是我的。
[00:33.39]These are mine,and those are yours. 这些是我的,而那些是你的。
[00:35.57]Those aren't your pens,are they? 那些钢笔不是你的,对吧?
[00:36.38]
点"搜索"->"替换",选中"正则表达式"
查找:^([/./?]^) ?++$
替换为:^1
点“全部替换”,完成。
以下是网上摘录的UE 技巧
1)删除空行: 替换 %[ ^t]++^p 为 空串
2)删除行尾空格: 替换 [ ^t]+$ 为 空串
3)删除行首空格: 替换 %[ ^t]+ 为 空串
4)每行设置为固定的4个空格开头: 替换 %[ ^t]++^([~ ^t^p]^) 为 " ^1"
5)每段设置为固定的4个空格开头: 替换 %[ ^t]+ 为 " " (如果一行是以空格开始的,则视之为一段的开始行)
6)将一段合并为一行: 替换 [ ^t]++^p^([~ ^t^p]^) 为 ^1 (注意: 此处假定文本是以DOS方式回车换行 - CR/LF)
7)去掉HTML TAG: 替换 ^{<*>^}^{<*^p*>^} 为 空串
8)删除HTML中的所有<A>: 替换 <[ ]++a *[ ]++href[ ]++=*> 为 空串
9)删除文本中指定的前2列字符: 替换 %?? 为 空串
10)在第4列后插入2列空白字符: 替换 %^(????^)^(?^) 为 "^1 ^2"
11)查找所有的数字: [0-9]+[.]++[0-9]+
12)查找所有的单词: [a-z]+
13)查找所有的网址: http://[a-z0-9^~`_./^-^?=&]+
UltraEdit正则表达式(UltraEdit Syntax)
%1 搜索以1开头的行
1$ 搜索以1为结尾的行
? 匹配单字符
* 匹配多字符
Te+st 匹配"test", "teest", "teeeest" 等. 但不匹配 "tst".
te++st 匹配"test", "teest", "teeeest","tst" 等. 但不匹配 .
^p 新行 (DOS Files格式)
^r 新行 (MAC Files格式)
^n 新行 (UNIX Files格式)
^t tab键
[1-9] 匹配1-9的数字
[linux] 匹配 linux中任何一个单词
[~0-9] 除数字外任何一个词
"^{John^}^{Tom^}" 搜索john和tom 如john sdfasdf tom被选种,当然不包括sdfasdf,其中^{和^}是分割符