正则表达式(二)——元字符

正则中的字符分为元字符和一般字符,一般字符就匹配它本身(写什么就是什么,比如正则中写字母‘a’,匹配的时候就匹配字母‘a’),而元字符是正则表达式中最基本的内容,也是最核心的内容,基本上所有的正则表达式都由“元字符”组成,元字符就是正则表达式的基础。在此文中,会涉及到字符组,多选结构,点号以及预定义字符集的基本介绍。

什么是“元字符”

所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符。这些元字符(专用的字符或则字符组),可以代替多个一个或多个字符。下面用一个图来展示一下基本的元字符

上面这个图包含了基本的‘元字符’,包括量词、边界匹配、字符匹配、逻辑、分组、环视和一些特殊的构造等等这些内容。

元字符——字符组

字符组分为两种:普通字符组和排除型字符组

一、普通字符组

“[······]”,以左边这种结构出现的正则表达式,就叫普通的字符组,它会匹配[·····]结构体中的字符的任意一个字符。

例如:[abc]

字符‘a’能匹配‘a’,字符‘b’能匹配‘b’,字符‘c’能匹配‘c’,而[abc]则表示匹配‘a’、‘b’、‘c’三个字符的中任意一个。

从编程的角度看就是一个‘或’的判断条件等同于另一个正则表达式(a|b|c),要不就匹配‘a’,要不就匹配‘b’,要不就匹配‘c’。

举个简单的例子,咱走一遍流程。

正则表达式:‘gr[ae]y’

首先匹配‘g’,接下来是‘r’,然后是一个‘a’或‘e’,最后是一个‘y’。由这样的流程可以知道,这个正则表达式可以匹配的文本为‘grey’或者‘gray’

我们也可以用连字符‘-’来表示一个范围,配合[······]结构体来匹配一个范围中的一个字符。比如:

正则表达式:[a-d0-9]

这个正则表达式可以匹配0,1,2,3,4,5,6,7,8,9,a,b,c,d中的任意一个字符。这种有两个包括两个以上范围的正则表达式叫做‘多重范围’

‘-’连字符只有在[·····]结构体中才是元字符,否则它只能匹配普通的连字符号,当然,如果‘-’字符在[·····]结构体的开头,那么它也只是普通的字符,例如

正则表达式:[-!.?abc]

此时的‘-’就表示它本身,这个正则表达式可以匹配‘-’,‘!’,‘.’,‘?’,‘a’,‘b’,‘c’中的任意一个

二、排除型字符组

“[^·····]”,以左边这种结构出现的正则表达式,就叫做排除型字符组,它会匹配[^·····]结构体中的字符以外的任意一个字符,就是说,除了^·····]结构体中的字符,其它字符都能匹配。

例如:[^abc]

上面这个正则表达式就能匹配d,匹配e,匹配d-z,A-Z,匹配任意数字,匹配‘?’之类的符号,但是就是不能匹配‘a’,‘b’,‘c’这三个字符中的任意一个

元字符——点号匹配任意字符

‘.’点号可以匹配除换行符\n的其余任意字符(只要点号不在字符组内,在字符组内的元字符意义都是它本身)。当然,如果要匹配点号本身,就需要使用转义字符‘\’来将转义,即‘\.’

元字符——多选结构

多选结构和字符组类似,都是‘或’的意思,在几个选一个。但它们最大的区别在于,‘字符组’只能在单个字符间做选择。而‘多选结构’是在多个表达式之间做选择。例如:

正则表达式:‘(grey|gray)’

上面这个正则表达式的意思就是,要么匹配grey,要么匹配gray,匹配的结果等同于‘gr[ae]y’再举个例子,就是:

‘Jeff(rey|ery)’

先匹配‘J’,接下俩匹配‘e’,接下来匹配‘f’,接下来匹配‘f’,再接下来匹配‘rey’或者‘ery’的的其中一个,这就是多选结构执行的流程

元字符——预定义字符集

预定义字符集就像上图中展示的,他们用‘\字母’的形式来代表多个字符,\d代表0至9,\s代表空白字符,\w代表0至9,a至z,A至Z。而他们的大些形式,则表示他们的差集合



元字符也包括了量词,位置匹配符,括号,反向引用这些内容,这些内容会在后续单独分开讲解。



参考:《精通正则表达式——第三版》

Python中的正则表达式教程

正则表达式(二)——元字符

时间: 2024-08-26 08:32:30

正则表达式(二)——元字符的相关文章

糯米丸&“坑叫兽”之正则表达式及元字符使用  

在介绍正则表达式之前,我们先普及一下,Linux系统下三大文本搜索工具grep.sed.awk.它们各自的作用如下: grep:grep(支持正则表达式) egrep(支持扩展表达式), fgrep(快捷搜索不支持正则表达      式):文本搜索工具:基于一组筛选条件对给定文本进行搜索操作: sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具:(本质是编辑器) awk:GNU awk,文本格式化工具:文本报告生成器:(文本美化器,可以理解为文字版的美图秀秀)  正则表达式:

[.net 面向对象程序设计进阶] (2) 正则表达式 (二)

[.net 面向对象程序设计进阶] (2) 正则表达式 (二) 上一节我们说到了C#使用正则表达式的几种方法(Replace,Match,Matches,IsMatch,Split等),还有正则表达式的几种元字符及其应用实例,这些都是学习正则表达式的基础.本节,我们继续深入学习表达式的几种复杂的用法. 1.分组 用小括号来指定子表达式(也叫做分组) 我们通过前一节的学习,知道了重复单个字符,只需要在字符后面加上限定符就可以了, 比如 a{5},如果要重复多个字符,就要使用小括号分组,然后在后面加

正则表达式(一) -- 元字符(转)

正则表达式括号的作用1.限制多选项的范围 (Fri|1)st 这样写会匹配Frist或1st 如果去掉,则 Fri|1st就是匹配 Fri或1st2.将若干个字符进行组合,受量词的同时作用.例如 th+ 表示匹配 th thh thhh(h无数次),如果是(th)+,则匹配的是th thth ththth(th无数次)3.反向引用,即前面括号匹配到的东西记忆与后面,常用于匹配重复单词.4.分组 常用元字符代码 说明. 匹配除换行符以外的任意字符\w  匹配字母或数字或下划线或汉字\s  匹配任意

正则表达式的元字符

利用Perl正则表达式还可以做另一件有用的事情,这就是使用各种元字符来搜索匹配.所谓元字符,就是用于构建正则表达式的具有特殊含义的字符,例如的“*”.“+”.“?”等.在一个正则表达式中,元字符不能单独出现,它必须是用来修饰原子的.如果要在正则表达式中包含元字符本身,使其失去特殊的含义,则必须在前面加上“\”进行转义.正则表达式的元字符如下表所示. 构造正则表达式的方法和创建数学表达式的方法相似,就是用多种元素符与操作符将小的表达式结合在一起来创建更大的表达式.正则表达式的组件可以是单个的字符.

正则表达式 \D 元字符

\D元字符可以匹配非数字字符,等价于"[^0-9]". 语法结构: (1).构造函数方式: new RegExp("\\D") (2).对象直接量方式: /\D/ 浏览器支持: (1).IE浏览器支持此方法. (2).火狐浏览器支持此方法. (3).谷歌浏览器支持此方法. (4).opera浏览器支持此方法. (5).safria浏览器支持此方法. 实例代码: var str="I love antzone \n and you 360"; va

正则表达式:元字符(基本可用来匹配的字符)

# 1: 匹配单个字符与数字 . 匹配除换行符以外的任意字符 [0123456789] 是字符集合,表示匹配方括号中所包含的任意一个字符 如[Mia] 匹配'M','i','a'中任意一个字符 [a-z] 匹配任意小写字母 [A-Z] 匹配任意大写字母 [0-9] 匹配任意数字,类似[0123456789] [0-9a-zA-z] 匹配任意的数字和字母,(不分大小写)(不能加空格,否则也匹配空格) [[0-9a-zA-z_] 匹配任意的数字.字母和下划线 [^Mia] 匹配除了'M','i','

常用的操作正则表达式的方法+正则表达式基本元字符使用实例

常用的操作正则表达式的方法: 下面学习一下位于System.Text.RegularExpressions下的Regex类的一些静态方法和委托(只要有一段匹配就会返回true) 1,静态方法IsMatch (返回值是一个布尔类型,用于判断指定的字符串是否与正则表达式字符串匹配,它有三个重载方法) bool IsMatch(string input, string pattern); 参数: input: 要搜索匹配项的字符串. pattern: 要匹配的正则表达式模式. 返回结果: 如果正则表达

php 正则表达式二.基本语法

官方手册正则语法:http://php.net/manual/zh/reference.pcre.pattern.syntax.php 正则表达式在线测试工具:regexpal 正则表达式的匹配先后顺序: 1.模式单元 2.重复匹配 ? * + {} 3.边界限定 ^ $ b B 4.模式选择 | 1.分隔符:当使用 PCRE 函数的时候,模式需要由分隔符闭合包裹.分隔符可以使任意非字母数字.非反斜线.非空白字符. 例子: /foo bar/ #^[^0-9]$# http://i.cnblog

正则表达式二

正则表达式 - 语法 http://www.runoob.com/regexp/regexp-syntax.html 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列出目录时,dir *.txt 或 ls *.txt 中的 *.txt 就不是一个正则表达式,因为这里 * 与正则式的 * 的含义是不同的. 构造正则表达式的方法和创建数学表达式的方法一样.也就是用多种元字符

数往知来 JavaScript js正则表达式<二十五>

1.匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 评注:表单验证时很实用 2.匹配网址URL的正则表达式:[a-zA-z]+://[^s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求 3.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用 4.匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 评注:匹配形式如 051