在貌似忙碌的实验之余,遇到一个问题:在网上下载了一个文档,格式是一首歌名,然后后边一堆介绍,我想把两百多首歌的名字都选出来,这个问题困扰了好几天,还借来VBA的书来看看,看看能不能通过代码来解决,由于编程几乎是一窍不通,所以上网找找办法,无意间发现了office的论坛,注册了一个玩玩,发现了很多高级命令,很神奇的,其中研究的最多的就是word的查找和替换功能了,窃以为不敢独享其成,所以趁着睡不着觉,整理出来,跟大家分享一下。我敢说这个绝对是最全的,到目前见识过的为止,有所有的通配符的使用方法,特殊代码的解释很详细,不是帮助文件可以比拟的~~~~
ps:黑字部分为整理内容,红色的字是自己的心得
Word的“查找替换”功能十分强大,不仅仅是简单地查找替换某个字符或者词组,配合通配符可以对整个文档进行批量格式整理。
1、基础知识:
1.1 通配符语法
特殊字符 |
代码/通配符 |
示例 |
任意单个字符 |
s?t 可查找“sat”和“set”。 | |
任意字符串(单个或多个字符) |
* |
s*d 可查找“sad”和“started”。 |
单词开头 |
< |
“<(inter)”可找到“interesting”和“intercept”,而不会找“splintered” |
单词结尾 |
> |
“(in)>”可找到“in”和“within”,而不会找“interesting” |
指定字符之一 |
[] |
w[io]n 查找“win”和“won”。 |
指定范围内任意单个字符 |
[ - ] |
[r-t]ight可找到“right”“sight”,必须用升序来表示该范围 |
方括号内字符以外的任意单个字符 |
[!] |
“m[!a]st”可找到“mist”和“most”,而不会找“mast” |
指定范围外任意单个字符 |
[!x-z] |
“t[!a-m]st”可找到“tock”和“tuck”,而不会找到“tack”或“tick” |
n 个前一字符或表达式 |
{ n } |
“fe{2}d”可找到“feed”,而不会找“fed” |
至少 n 个前一字符或表达式 |
{ n, } |
“fe{1,}d”可找到“fed”和“feed” |
n 到 m 个前一字符或表达式 |
{ n,m } |
“10{1,3}”可找到“10”、“100”“1000” |
1个以上前一字符或表达式 |
@ |
“lo@t”可找到“lot”和“loot” |
表达式分组 |
( ) |
“<(pre)*(ed)> ”可查找“presorted”和“prevented” |
表达式代替 |
\n |
例如,在“查找内容”框,键入“(Newton)(Christie)”,在“替换为”框键入“\2\1”,Word 将找到“Newton Christie”并将其替换为“Christie Newton”。 |
需要注意的是,实例给出的示例未必就代表了所有的适用范围,比如说:示例给的是所有英文字母的查找范围,其实数字也适用,标点也适用,前提是要清楚全角半角标点符号的ASCII代码; 这些通配符的使用掌握起来综合运用可以实现貌似变成才能解决的问题。还有就是汉字其实和所谓字符的定义其实有不同,因为汉字是两个字节表示的,而所谓字符是一个字节的,这点在查找时候其实很关键~~~
1.2 特殊代码
序号 |
清除使用通配符复选框 |
勾选使用通配符复选框 | ||
特殊字符 |
代码 |
特殊字符 |
代码/通配符 | |
1 |
段落标记(?) |
^p |
段落标记 |
^13 |
2 |
制表符(→) |
^t |
制表符 |
^t |
3 |
任意单个字符(只用于查找框) |
^? |
任意单个字符 |
|
4 |
任意数字(单个)(只用于查找框) |
^# |
任意数字(单个) |
[0-9] |
5 |
任意英文字母(只用于查找框) |
^$ |
任意英文字母 |
[a-zA-Z] |
6 |
脱字号 |
^^ |
脱字号 |
^^ |
7 |
§分节符 |
^% |
§分节符 |
^% |
8 |
段落符号 |
^v |
段落符号 |
^v |
9 |
分栏符 |
^n |
分栏符 |
^n 或 ^14 |
10 |
省略号 |
^i |
省略号 |
^i |
11 |
全角省略号 |
^j |
全角省略号 |
^j |
12 |
长划线 |
^+ |
长划线 |
^+ |
13 |
1/4长划线 |
^q |
1/4长划线 |
^q |
14 |
短划线 |
^= |
短划线 |
^= |
15 |
无宽可选分隔符 |
^x |
无宽可选分隔符 |
^x |
16 |
无宽非分隔符 |
^z |
无宽非分隔符 |
^z |
17 |
尾注标记(只用于查找框) |
^e |
尾注标记 |
(不支持) |
18 |
域(只用于查找框) |
^d |
域 |
(不支持) |
19 |
脚注标记(只用于查找框) |
^f 或 ^2 |
脚注标记 |
(不支持) |
20 |
图形(只用于查找框) |
^g 或 ^1 |
图形 |
^g |
21 |
手动换行符 |
^l |
手动换行符 |
^l 或 ^11 |
22 |
手动分页符 |
^m |
分页符/分节符 |
^m |
23 |
不间断连字符 |
^~ |
不间断连字符 |
^~ |
24 |
不间断空格 |
^s |
不间断空格 |
^s |
25 |
可选连字符 |
^- |
可选连字符 |
^- |
26 |
分节符(只用于查找框) |
^b |
分节符/分页符 |
^m |
27 |
白色空格(即空白区域,可以是常规空格、不间断空格以及制表符的任意组合) |
^w |
|
|
28 |
批注(只用于查找框) |
^a 或 ^5 |
|
|
29 |
全角空格(Unicode) |
^u8195 |
|
|
30 |
半角空格(ASCII) |
^32 |
| |
31 |
半角空格(Unicode) |
^u8194 |
| |
32 |
ASCII 字符(范围1~128) |
^nnn |
|
|
33 |
ANSI 字符 (范围1~255) |
^0nnn |
|
|
34 |
Unicode 字符 |
^Unnnn |
|
|
35 |
反斜杠\ |
\ |
反斜杠\ |
\\ |
36 |
问号? |
问号? |
\? | |
37 |
星号* |
* |
星号* |
\* |
38 |
左括号( |
( |
左括号( |
\( |
39 |
右括号) |
) |
右括号) |
\) |
40 |
左中括号[ |
[ |
左中括号[ |
\[ |
41 |
右中括号] |
] |
右中括号] |
\] |
42 |
感叹号! |
! |
感叹号! |
\! |
43 |
电邮符号@ |
@ |
电邮符号@ |
\@ |
44 |
减号- |
- |
减号- |
\- |
45 |
逗号, |
, |
逗号, |
\, |
46 |
查找框中的内容(仅用于替换框) |
^& |
查找的内容 |
^& |
47 |
剪贴板中的内容(仅用于替换框) |
^c |
剪贴板内容 |
^c |
48 |
|
|
所有小写英文字母 |
[a-z] |
49 |
|
|
所有大写英文字母 |
[A-Z] |
50 |
|
|
所有西文字符 |
[^1-^127] |
51 |
|
|
所有中文汉字和中文标点 |
[!^1-^127] |
52 |
|
|
所有中文汉字(CJK统一字符) |
[一-龥] 或 [一-﨩] |
53 |
|
|
所有中文标点 |
[!一-龥^1-^127] |
54 |
|
|
所有非数字字符 |
[!0-9] |
很全,很全的东西,几乎涵盖了所有,需要注意的问题还不少,其中我觉得最为关键的就是勾选和不勾选通配符使用项目的区别了,因为word虽然对于错误的使用方式会有对话框的提示,但有些是通用的,一旦不熟悉使用的具体原则,很可能会出错,但是往往由于他不提示,还查不出是哪里错误了,我总结最好的方式,就是先勾选或不勾选使用通配符,然后再在高级——特殊字符里用鼠标选,这样既可以避免了记忆繁琐的通配符,还能避免出错,但是缺点就是他给的下拉列表不是很全,有些不常用的没给出来,最好还是完全熟悉使用规则吧~~~
1.3 ASCII、ANSI和Unicode字符
1. ASCII 字符
ASCII 码的全称是American Standard Code for Information Interchange(美国信息互换标准代码),使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。
标准 ASCII 码也叫基础ASCII码,使用 7 位二进制数来表示所有的数字、大小写字母、英文标点符号,以及一些特殊的控制字符。
后128个称为扩展ASCII码。扩展 ASCII 码允许将每个字符的第 8 位用于确定附加的 128 个特殊符号字符、外来语字母和图形符号。
ASCII 字符可用通过Word的菜单命令【插入】/【符号】中,来自“ASCII(十进制)”/“ASCII(十六进制)”。
注:在Word的查找替换中,一个ASCII字符可用^nnn来表示,范围是1~128,比如:字母X,可表示为^88。
另外,某些ASCII控制字符(即不能显示的字符,如:制表符、回车符),被赋予了特殊的含义,而不再代表一个字符。
标准ASCII字符集
代码 |
说明 |
代码 |
说明 |
代码 |
说明 |
1 |
嵌入式图形 |
44 |
, |
87 |
W |
2 |
脚注标记 |
45 |
- |
88 |
X |
3 |
|
46 |
. |
89 |
Y |
4 |
|
47 |
/ |
90 |
Z |
5 |
|
48 |
0 |
91 |
[ |
6 |
|
49 |
1 |
92 |
\ |
7 |
表格竖线 |
50 |
2 |
93 |
] |
8 |
退格键 |
51 |
3 |
94 |
^ |
9 |
制表符 |
52 |
4 |
95 |
_ |
10 |
换行符 |
53 |
5 |
96 |
` |
11 |
手动换行符 |
54 |
6 |
97 |
a |
12 |
分页符或分节符 |
55 |
7 |
98 |
b |
13 |
回车符 |
56 |
8 |
99 |
c |
14 |
分栏符 |
57 |
9 |
100 |
d |
15 |
|
58 |
: |
101 |
e |
16 |
|
59 |
; |
102 |
f |
17 |
|
60 |
< |
103 |
g |
18 |
|
61 |
= |
104 |
h |
19 |
左侧域标志 |
62 |
> |
105 |
i |
20 |
|
63 |
106 |
j | |
21 |
右侧域标志 |
64 |
@ |
107 |
k |
22 |
|
65 |
A |
108 |
l |
23 |
|
66 |
B |
109 |
m |
24 |
|
67 |
C |
110 |
n |
25 |
|
68 |
D |
111 |
o |
26 |
|
69 |
E |
112 |
p |
27 |
|
70 |
F |
113 |
q |
28 |
|
71 |
G |
114 |
r |
29 |
|
72 |
H |
115 |
s |
30 |
|
73 |
I |
116 |
t |
31 |
|
74 |
J |
117 |
u |
32 |
半角空格 |
75 |
K |
118 |
v |
33 |
! |
76 |
L |
119 |
w |
34 |
" |
77 |
M |
120 |
x |
35 |
# |
78 |
N |
121 |
y |
36 |
$ |
79 |
O |
122 |
z |
37 |
% |
80 |
P |
123 |
{ |
38 |
& |
81 |
Q |
124 |
| |
39 |
' |
82 |
R |
125 |
} |
40 |
( |
83 |
S |
126 |
~ |
41 |
) |
84 |
T |
127 |
|
42 |
* |
85 |
U |
128 |
€ |
43 |
+ |
86 |
V |
|
|
2. ANSI字符
为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示1个字符。比如:汉字“中”在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
不同的国家和地区制定了不同的标准,由此产生了GBK(简体中文), BIG5(繁体中文),JIS(日语)等各自的编码标准。这些使用2个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文操作系统下,ANSI 编码代表GBK编码。扩展ASCII 码可视为英文系统下的ANSI字符集。
注:在Word的查找替换中,一个ANSI字符可用^0nnn来表示,范围是1~255。比如:字母X,可表示为^088。另外,ANSI Character并不代表GBK字符,而似乎和扩展ASCII码相同。
3. Unicode字符
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换和处理的要求。
Unicode字符可用通过Word的菜单命令【插入】/【符号】中,选择“Unicode(十六进制)”即可。常用汉字(CJK统一汉字)的范围是4E00~9FA5(一~龥),因此,通配符“[一-龥]”可以表示一个汉字。
注:在Word的查找替换中,一个Unicode字符可用^Unnnn来表示(关闭“使用通配符”选项),比如:中国,可表示为^u20013^u22269。不支持16进制表达。
只能说这个很关键,很多很神奇的查找方式就是通过这些代码实现的,具体的只能慢慢用的时候熟悉了~~~
2.示例
由于篇幅有限,举两个最实用的例子来看看,玩玩
2.1 这个例子能实现对未设置大纲级别的标题采用自动编号,然后自动生成目录,记得这个学期初,老蔡我两个研究实习报告的时候自动生成目录的问题了,那么多标题,要一个一个的选中,然后用格式刷刷,设置大纲级别,然后编号,在生成目录,一不小心还会弄丢两个,这个例子相信通过相应的其他操作可以很简单精确地实现上述目的
替换前效果 |
替换后效果 | |
鼓励支持和引导个体私营等非公有制经济发展 意见 一、放宽非公有制经济市场准入 (一)放宽投资领域。除法律法规明确禁入的领域外,均允许非公有资本进入,所有我国政府承诺对外开放的领域,均允许国内非公有资本进入。 二、加大对非公有制经济的财税支持 (三)加大市中小企业发展资金的支持力度。以2005年度中小企业发展资金为基数,从2006年开始,用5年的时间从非公有制经济每年上缴市级地方财政收入新增部分,提取10%充实市中小企业发展资金。 四、完善对非公有制经济的社会化服务 (十一)加强人才服务。重视非公有制经济的人才队伍建设,对非公有制企业引进的高层次人才。 |
鼓励支持和引导个体私营等非公有制经济发展 意见 一、放宽非公有制经济市场准入 (一)放宽投资领域。除法律法规明确禁入的领域外,均允许非公有资本进入,所有我国政府承诺对外开放的领域,均允许国内非公有资本进入。 二、加大对非公有制经济的财税支持 (三)加大市中小企业发展资金的支持力度。以2005年度中小企业发展资金为基数,从2006年开始,用5年的时间从非公有制经济每年上缴市级地方财政收入新增部分,提取10%充实市中小企业发展资金。 四、完善对非公有制经济的社会化服务 (十一)加强人才服务。重视非公有制经济的人才队伍建设,对非公有制企业引进的高层次人才。 | |
操作方法: 选择要替换内容,按下Ctrl+H组合键,“勾选使用通配符” | ||
查找内容: |
替换为: | |
[一二三四五六七八九十]@、*^p |
(空空) (格式:样式/标题1) |
当这些设置好之后,就可以插入域,或者索引目录来实现多样化的目录了,这个例子有个问题,就是查找内容里的代码([一二三四五六七八九十]@、*^p)其实原来是这样的[一二三四五六七八九十]@、,但是我的word时而能实现上诉功能,时而又不行,于是我加上了后边的两个代码,就正规了,一直也没弄明白是怎么回事,求高手指点,按理说要加上后边的两个代码啊,要不然怎么识别查找到断尾呢~~~不解
2.2 这个例子挺实用,将文档中空白的区域全部一次性删除,而不是以前仅仅知道的,只删除空白的段落而已,这些空白区域包括文档中所有的半角空格(^32)、全角空格、不间断空格(^s)(是通过Ctrl+Shift+Space输入的)以及制表符(^t)(通过按Tab键输入的)的任意组合,我觉得很有用~~~
替换前效果 |
替换后效果 | |
第一 条 为适应社会主义市场经济的要求,发展生产力,依据《中华人民共和国 公司法》(以下简称《公司法》)及有关法律、 法规的 规定,特制定 本章程。 |
第一条为适应社会主义市场经济的要求,发展生产力,依据《中华人民共和国公司法》(以下简称《公司法》)及有关法律、法规的规定,特制定本章程。 | |
操作方法: 选择要替换的内容,按下Ctrl+H组合键,打开“查找和替换”对话框 | ||
查找内容: |
替换为: | |
^w |
(空空) |
仅仅一个对话框的功能就这么吓人,我操他大爷了,据说90%word用户只用到其中10%的功能,而10%用户才用到他的90%的功能,慢慢整吧,希望有谁觉得这玩意好玩的,一块交流一下,在此说一下,沈丹丹和周小星,你两个都信誓旦旦的要学点类似的玩意,本指望着啥时候交流一下呢,估计那股热乎劲过去了吧,害我空欢喜一场~~~