元字元


元字元

文章插图
元字元【元字元】正则表达式语言由两种基本字元类型组成:原义(正常)文本字元和元字元 。元字元使正则表达式具有处理能力 。所谓元字元就是指那些在正则表达式中具有特殊意义的专用字元,可以用来规定其前导字元(即位于元字元前面的字元)在目标对象中的出现模式 。
基本介绍中文名:元字元
外文名:metacharacter
解释:一组代替一个或多个字元的字元
字元套用:较为常用的元字元包括
使用方式:\s:用于匹配单个空格符
解释元字元是一个或一组代替一个或多个字元的字元 。听起来有点拗口,但举一个例子也许你就明白了:元字元*用来匹配0个或多个的前一字元;而元字元.用来匹配一个任意的一个字元(除换行符外) 。字元套用较为常用的元字元包括: “+”, “*”,以及 “?” 。其中,“+”元字元规定其前导字元必须在目标对象中连续出现一次或多次,“*”元字元规定其前导字元必须在目标对象中出现零次或连续多次,而“?”元字元规定其前导对象必须在目标对象中连续出现零次或一次 。下面,就让我们来看一下正则表达式元字元的具体套用 。/fo+/因为上述正则表达式中包含“+”元字元,表示可以与目标对象中的 “fo”, “foo”, 或者 “fooo” 等在字母f后面连续出现一个或多个字母o的字元串相匹配 。/eg*/因为上述正则表达式中包含“*”元字元,表示可以与目标对象中的 “e”, “eg” 或者 “egg” 等在字母e后面连续出现零个或多个字母g的字元串相匹配 。/Wi?/因为上述正则表达式中包含“?”元字元,表示可以与目标对象中的 “W”, 或者 “Wi”,等在字母i后面连续出现零个或一个字母 i 的字元串相匹配 。除了元字元之外,用户还可以精确指定模式在匹配对象中出现的频率 。例如,/jim{2,6}/上述正则表达式规定字元m可以在匹配对象中连续出现2-6次,因此,上述正则表达式可以同jimmy或jimmmmmy等字元串相匹配 。使用方式在对如何使用正则表达式有了初步了解之后,我们来看一下其它几个重要的元字元的使用方式 。\s:用于匹配单个空格符,包括tab键和换行符;\S:用于匹配除单个空格符之外的所有字元;\d:用于匹配从0到9的数字;\w:用于匹配字母,数字或下划线字元;\W:用于匹配所有与\w不匹配的字元;. :用于匹配除换行符之外的所有字元 。(说明:我们可以把\s和\S以及\w和\W看作互为逆运算)下面来看看更多的例子:\ba\w*\b匹配以字母a开头的单词——先是某个单词开始处(\b),然后是字母a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b) 。好吧,我们说说正则表达式里的单词是什幺意思吧:就是不少于一个的连续的\w 。不错,这与学习英文时要背的成千上万个同名的东西的确关係不大 :)\d+匹配1个或更多连续的数字 。这里的+是和*类似的元字元,不同的是*匹配重複任意次(可能是0次),而+则匹配重複1次或更多次 。\b\w{6}\b 匹配刚好6个字元的单词 。元字元^(和数字6在同一个键位上的符号)和$都匹配一个位置,这和\b有点类似 。^匹配你要用来查找的字元串的开头,$匹配结尾 。这两个代码在验证输入的内容时非常有用,比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$ 。这里的{5,12}和前面介绍过的{2}是类似的,只不过{2}匹配只能不多不少重複2次,{5,12}则是重複的次数不能少于5次,不能多于12次,否则都不匹配 。因为使用了^和$,所以输入的整个字元串都要用来和\d{5,12}来匹配,也就是说整个输入必须是5到12个数字,因此如果输入的QQ号能匹配这个正则表达式的话,那就符合要求了 。和忽略大小写的选项类似,有些正则表达式处理工具还有一个处理多行的选项 。如果选中了这个选项,^和$的意义就变成了匹配行的开始处和结束处 。egrep元字元总结匹配单个字元的元字元. 点号 匹配单个任意字元[…] 字元组 匹配单个列出的字元[^…] 排除型字元组 匹配单个未列出的字元\char 转义字元 若char是元字元,或转义序列无特殊含义时,匹配char对应的普通字元提供计数功能的元字元? 问号 容许匹配一次,但非必须* 星号 可以匹配任意多次,也可能不匹配+ 加号 至少需要匹配一次,至多可能任意多次{min,max} 区间量词 至少需要min次,至多容许max次匹配位置的元字元^ 脱字元 匹配一行的开头位置$ 美元符 匹配一行的结束位置\< 单词分界符 匹配单词的开始位置\> 单词分界符 匹配单词的结束位置其他元字元| alternation 匹配任意分隔的表达式(…) 括弧 限定多选结构的範围,标注量词作用的元素,为反向引用”捕获”文本\1,\2,… 反向引用 匹配之前的第一、第二组括弧内的字表达式匹配的文本使用括弧的3个理由:限制多选结构、分组、捕获文本-i的参数很有用,它能忽略大小写的匹配转义有3种情况:1. \ 加上元字元,表示匹配元字元所使用的普通字元 。2. \ 加上非元字元,组成一种由具体实现方式规定其意义的元字元序列 如\<表示单词的起始边界 。3. \ 加上任意其他字元,默认情况就是匹配此字元,也就是说,反斜线被忽略了 。