Search and Replace的正则表达式
以下例子均在Search and Replace中适用,EditPlus也有正则表达式,但有点不一样。
1.1 基本操作符
* |
重复0次或更多次 |
+ |
重复一次或更多次 |
? |
重复一次 |
| |
或 操作符 |
! |
非 操作符 |
^ |
以^后字符开始的行 |
$ |
以$前字符结尾的行 |
^^ |
以^^后字符开始的文件 |
$$ |
以$$前字符结尾的文件 |
[] |
范围操作符 |
() |
子串 |
+n |
指定列数操作符,常与()或[]配合使用 |
1.2 正则表达式的查找
* Zero or More Operator:匹配在()或[]中零次或更多次的表达式。*也可以单独使用,如果单独使用,将是匹配一行里从开始到结束的所有字符。也可以在*后指定字符以匹配两个或更多直至最大匹配数的表达式(可以在软件中修改)。
例子: *(is) 出现零次或更多次的is,如is, Mississippi
*[is] 出现零次或更多次的i或s,如 Some, Expression,single
Windows*[0-9] 以Windows为开始,随后跟着0-9字符的字符串
windows*[]95 以windows为开始,随后跟着任意个字符,后以95结尾的字符串
+ One Or More Operator:重复出现1次或多次操作符。
例子: +(is) 匹配字符串is,Mississippi
w+e 匹配字符串wide,white,write,不匹配we
? One Occurrence Operator:?前或后的字符串出现一次。也可以放在两个字符串之间,放在()前时,表示()内表达式出现一次。
例子: ?(is) 匹配 is
win?95 匹配 win 95,win-95,win/95
| Or Operator:与操作符。需要与()操作符配合使用。
例子: (01/|02/)+[0-9](/95|/98) 匹配 01/15/98和02/12/98 前三个字符为01/或者02/,后面出现一到多位的0-9数字,后面跟着/95或者/98
w*[a-z](98|NT)\? 匹配 windows 98?,win NT? 以w为开始的字符串,后面跟着n(n>=1)个位的字母(必须为a到z),跟着98或者NT字符,最后以?结尾。注意:要查找?等表达式时,要使用转义符\ 。
! Not Operator:非操作符。可以与()操作符配合使用。
例子: ?at!((b|c)at) 匹配 mat 和 sat 而不是 bat 或者 cat。注意:双重括号的使用
*file!(beg*file) 匹配 a file 和 this file 而不是 beginning of file
*98!(Windows 98) 匹配 1998 而不是Windows 98
*98!(+[a-z ]98) 匹配 1998 而不是 windows 98
a?b?c!(aub?c)!(a?bvc) 查找aXbYc,X不是u,Y不是v
^ Beginning Of Line Operator:以^后字符为开始的行,注意是行而不是一个单词。
例子: ^the 查找以the,The,THE开头的行
^(the|[a<]) 查找以the或A或<开头的行
^*( )BEnd\r\n*( )Exit Function 匹配 <space(s)(零个或多个空格)>Bend<接着下一行>Exit Function
$ End Of Line Operator:以$后字符为结束的行,跟^差不多,可以配合一起使用。
^^ Beginning Of File Operator:以^^后字符为开始的文件。
$$ End Of File Operator:以$$后字符为结束的文件。
[] Range Operator:可以参照上面的例子使用,注意*[]匹配的是最大可容纳的字符串,包括一些换行符,可以在多行之间查找。
() Subexpression Operator:可以参照上面的例子使用。
+n Column Specifier:可以参照上面的例子使用。