EmEditor与正则表达式
正则表达式,英文 Regular expression,简写Regexes或Regex。
应用概述:提供与预期的搜索结果匹配的确切文本来进行字符串的搜索和替换操作。这种技术不仅仅用于开发领域,更被集成到一些常见的文本扩展编辑器,如UltraEdit、EmEditor等。历史上第一个实用应用程序是Unix 中的Qed 编辑器。
举一个简单的类比:我们对DOS中的通配符"*"和"?"应该很熟悉,如命令"dir *.exe" 将列出所有后缀名为exe的文件名。正则表达式提供的方法与其类似,而且远比通配符强大的多。
从某种意义上说,正则表达式是一种语言,通过及其简短的一行代码即可以高效、精确的描述要匹配的复杂文本,当然,它最大的优点也是他最大的缺点:语法复杂,创建困难。
主要应用:
数据验证 这是正则表达式在开发中最常见的应用,通过测试字符串内的模式。来验证输入的字符串是否为、电话号码、地址、信用卡号码等等。
搜索和替换文本 用正则表达式来搜索文档中的特定文本块,根据需要用其他指定的文本块进行替换。这也是文本编辑中的一个常见应用,如将网页中的HTML代码转化为UBB代码。
既然发在“软件使用”板,正则表达式的开发应用就不介绍了,以下仅以EmEditor中的正则表达式来作介绍:
1.启用正则表达式
菜单:搜索-查,选中“使用正则表达式”。
2. Emeditor 正则语法
正则匹配指定中文汉字
正则表达式是普通字符和元字符组合的一种模式。它的结构与算术表达式的结构类似,各种元字符和运算符可以将小的表达式组合起来,创建大的表达式。通过在一对分隔符之间放置表达式模式的各种组件,就可以构建正则表达式。
2.1 普通字符
普通字符是指除了 " . "、 "*"、"?"、 "+"、 "("、 ")"、 "{"、 "}"、 "["、 "]"、"^"、 "$" 和 "\" 这些特殊字符之外的所有其他字符。而这些特殊字符也可以通过前面加上"\"前缀而变为普通字符。比如,搜索"CCF"即为在文
本中匹配所有的"CCF"字符串,搜索"\[CCF\]"则是在文本中匹配所有的"[CCF]"字符串。
简而言之,普通字符即为只匹配自身的字符。
2.2 元字符
元字符不匹配其自身,它用特殊方式来解析从而实现更多的逻辑功能。正则表达式通过元字符在模式中包含选择和循环
2.2.1 特殊字符
. 匹配除换行符 \n 之外的任何单个字符。
( ) 分组捕获(子表达式)的开始和结束。可以捕获子表达式以供以后使用。
[ ] 中括号表达式的开始。
中括号表达式是在方括号内包含一个或多个字符构成的列表的表达式。普通字符在中括号内表示本身,大多数特殊字符在中括号表达式内出现时失去它们的意义。除了转义字符'\',(要包含'\',需要使用'\\') 如:正则表达式 No [1234] 匹配 No 1,No 2,No 3 和 No 4。
如果想在中括号中使用一个范围作为列表来匹配字符,可以用连字符 '-' 将范围中的开始字符和结束字符分开。单个字符的字符值确定范围内的相对顺序。如:正则表达式 No [1-4] = No [1234]
注意
开始值的Unicode值必须在结束值Unicode值的前面。
[\-]匹配连字符'-',放在中括号列表的开始或结尾也可起到同样的效果,如 [-c-f] 匹配 c 至 f 的字符和连字符
如果需要匹配不属于列表或范围内的任何字符,可以在列表开头加上'^'前缀。如:正则表达式 No [^1-4] 匹配 No 5 和更大的编号。
中括号表达式还可进行组合,如 [A-Za-z0-9] 匹配A-Z,a-z,0-9 的字符
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如:
字符 n 匹配字符 n
\n 匹配换行符
序列 \\ 匹配 \
序列 \( 匹配 (
| 替换字符,对 | 左右的两个项分别匹配进行选择。或者说,就是逻辑的OR的概念。
{ } 标记限定符表达式的开始。
(数量)限定字符
限定字符能够指定正则表达式的某个部分必须出现的次数
* 零次或多次匹配前面的字符或子表达式。如,c*f 可以匹配 f 和 ccf。* = {0,}
+ 一次或多次匹配前面的字符或子表达式。如,c+f 可以匹配 cf 和 ccf,但不匹配 f。+ = {1,}
零次或一次匹配前面的字符或子表达式。如,cc?f 可以匹配 cf 或 ccf。? = {0,1}
{n} n 是非负整数。正好匹配 n 次。如,c{2}f 可以匹配 ccf。
{n,} n 是非负整数。至少匹配 n 次。如,c{2,}f 不匹配 cf,而可以匹配 ccccccf。c{1,} = c+,c{0,} = c*。
{n,m} m 和 n 是非负整数,其中 n <= m。至少匹配 n 次,至多匹配 m 次。如,c{1,3} 可以匹配 ccf 中的cc。c{0,1} = c?。
2.2.2 控制字符
\a Bell 字符。= 0x07
\f 换页符匹配。= 0x0C
\n 换行符匹配。= 0x0A
\r 匹配一个回车符。= 0x0D
\t 制表符匹配。= 0x09
\v 垂直制表符匹配。= 0x0B
\e ASCII 换码字符。= 0x1B
\0dd 八进制换码字符,dd代表八进制数字。
XXXX或 {XXXX} 4位十六进制Unicode字符,XXXX代表十六进制数字。
\cZ Z-'@' 控制字符Control-Z,Z为大于等于"@"的ASCII字符
2.2.3 换码字符
\w 任一单词字符,如A-Z,a-z,0-9,_等,如 \w\w\w可以匹配 U_4 但不匹配 %^e
\W 任一非单词字符,如 \W\W 可以匹配 *& 但不匹配 7#
\s 任一空白字符,包括空格、制表符、换页符、回车符和垂直制表符。= [ \f\n\r\t\v]
\S 任一非空白字符。= [^ \f\n\r\t\v]
\d 0-9的任一数字字符,如 \d\d可以匹配 54 但不匹配 a4
\D 任一非数字字符。如 \D\D可以匹配 a4 但不匹配 54
\l a-z 之间的任一小写字符,如 \l\l\l可以匹配 ccf 但不匹配 ccF

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。