在Word里使用部分正则表达式
作为一套昂贵的字处理软件,Word里竟然不可用正则表达式,实在令人发指。不过他的查找替换里可以使用通配符(Wildcards),可以实现一部分的正则表达式功能。
例如:把所有email地址改写 mailto:xxx@gmail.com 的形式,可以用以下操作:
Ctrl-H
more
Use wildcards
Find what: ([a-zA-Z0-9.+_-]@\@[a-zA-Z0-9]@.[a-z]@)
Replace with: mailto:\1
然后替换就可以了。
一些常用的正则表达式(已含所有的 MS Word 可用的通配符)
含义 | GNU grep | GNU Emacs | Perl | MS Word |
任何单个字符 | . | . | . | ? |
符合其中的任一字符 | [...] | [...] | [...] | [...] |
符合除此之外的任一字符 | [^...] | [^...] | [^...] | [!...] |
子表达式 | \(re\) | \(re\) | (re) | (re) |
表达式重复多次 | re\{...\} | re\{...\} | re{...} | re{...} |
表达式出现0或1次 | re\? | re? | re? | 无 |
表达式出现0或多次 | re* | re* | re* | 无 |
表达式出现1或多次 | re\+ | re+ | re+ | re@ |
表达式出现0或1次(lazy mode) | 无 | re?? | re?? | 无 |
表达式出现0或多次(lazy mode) | 无 | re*? | re*? | 无 |
表达式出现1或多次(lazy mode) | 无 | re+? | re+? | 无 |
单词起始 | \< | \< | 无 | < |
单词结尾 | \> | \> | 无 | > |
单词边界(起始或结尾) | \b | \b | \b | 无 |
非单词边界 | \B | \B | \B | 无 |
任意字符串 | .* | .* | .* | * |
行首 | ^ | ^ | ^ | 无 |
行末 | $ | $ | $ | 无 |
换行符 | \n | C-q C-j | \n | ^13 |
”或“ | re\|re | re\|re | re|re | 无 |
引用上次找到的内容 | 不知道 | \& | 不知道 | ^& |
引用被括号捕获的内容 | \digit | \digit | \digit | \digit |
含义 | GNU grep | GNU Emacs | Perl | MS Word |
注:
re 代表一个正则表达式 (RegExp)
MS Word里多次匹配,最少是一次,没有0次。
\digit 指 \后面加数字 如 \1 \2
正则表达式里括号子表达式可以嵌套使用,Word里好像不行