正则表达式(一) -- 元字符(转)
正则表达式括号的作用
1、限制多选项的范围 (Fri|1)st 这样写会匹配Frist或1st 如果去掉,则 Fri|1st就是匹配 Fri或1st
2、将若干个字符进行组合,受量词的同时作用。例如 th+ 表示匹配 th thh thhh(h无数次),如果是(th)+,则匹配的是th thth ththth(th无数次)
3、反向引用,即前面括号匹配到的东西记忆与后面,常用于匹配重复单词。
4、分组
常用元字符
代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配行的开始
$ 匹配行的结束
常用反义元字符
代码 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
常用重复限定符
代码 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
正则表达式之元字符
一、最易理解的元字符。
脱字符 ^ :表示匹配行首的文本
美元符 $ :表示匹配行尾的文本
例如:
^cat //匹配以c作为一行的第一个字符是c,然后是一个a,紧接着一个t的文本
以上正则表达式匹配的是:
例如一个行 catdogcat 上面正则表达式匹配第一个cat。
特殊正则说明:
^cat$ //匹配行开头是cat,然后就是行末尾的cat,说白了就是一行中仅仅只包含cat的行,没有其他字符。^$ //匹配行开头,然后就是行末尾了,说白了就是匹配一个空行(没有任何字符,也没有空白字符)^ //匹配行的开头,每一行都匹配
二、字符组
匹配若干字符之一
[] //字符串用中括号括起来,表示匹配其中的任一字符,相当于或的意思
例如:
gr[ea]y //匹配grey或gray
其中连字符 - 表示一个范围,例如<h[1-6]> 与 <h[123456]>的作用一致。其他类似的还有[a-z],[A-Z]。
这里必须要注意的是只有在字符组内部连字符 - 才是元字符,否则它就只匹配普通的连字符 - 。
三、排除型字符组
用[^...]取代[...]这个字符组就会匹配任何未列出的字符。
[^...] //[^...]表示匹配所有方括号里未列出的字符
例如:
r[^abc]r //匹配出rar,rbr,rcr之外的任意r*r文本
下面的例子要注意下,例如正则表达式 q[^u] 不会匹配 Qantas 和 Iraq 这又是为什么呢?
因为正则表达式是区分大小写的。其次q[^u]要求q后面跟一个非u的字符,即必须包含一个字符。
在特别强调,排除型字符组表示“匹配一个未列出的字符”而不是“不要匹配列出的字符”。区别在于前者必须要匹配一个。
另外还要强调一点,在[]里面是没有元字符的,都代表本身的含义,例如[.]就表示匹配一个点.的意思。
四、点号.匹配任意字符
元字符.是用来匹配任意字符的字符组的渐变写法。
. //匹配任意字符的字符组简便写法
例如:
.a //匹配 Aa 1a ga 等等
五、多选结构
| 是一个非常简捷的元字符,它的意思是或。依靠它,我们能够把不同的子表达式组合成一个总的表达式,而这个总表达式又能够匹配任意的子表达式。
| //或 多选分支 选择两者中的一个 注意|将左右两边分为两部分,而不管左右两边有多长多乱
例如:
gray|grey //既可匹配gray又可匹配grey 相当于gr[ae]y
如果将|写在中括号[]里面,那么 | 就不是元字符,它和a e一样,只代表本身字符。
对于表达式gr(a|e)来说,括号是必须的,如果没有括号,那么gra|ey的意思就成了 gra | ea 即匹配gry或匹配ey。
再比如 Frist|1st 与 (Fri|1)st 表示的是同一个意思
另外要特别注意下,下面的这个例子
^from|subject|date: 与 ^(from|subject|date): 之间的区别
对于前者:只能匹配 ^from 或 subject 或 date:
对于后者: 能够匹配 ^from: 或 ^subject: 或 ^date:
六、忽略大小写
当然忽略大小写你可以用 [Aa]bc 取代 abc ,但是这样不方便。正则表达式提供一个 -i 。用于忽略大小写匹配。
-i //用于忽略大小写匹配
七、单词分界符
\b 表示单词分界符
\b //匹配单词的开始或结束
八、可选项元素
? 代表可选项,把他加在一个字符的后面,就表示此处容许出现这个字符,不过它的出现并非匹配成功的必要条件。
? //跟在一个字符后面,容许此字符出现0次或1次
例如:
colou?r //可以匹配colour或color
然后来说一下结合其他元字符使用的情况:
例如:
July|Jul 可缩短为 July?
4th|4 可缩短为 4(th)?
九、重复出现
加号+和星号*的作用与问号类似,的作用都是限定字符出现的次数。因此问号?加号+星号*这3个元字符统称量词。
? //可以出现0次或1次 + //至少要出现1次,可以出现无数次 * //可以出现0次或出现无数次
十、规定重现次数的范围:区间
{min,max} 大括号内的数字用于表示某字符允许出现的次数区间。
{min,max} //大括号内的数字用于表示某字符允许出现的次数区间。
这里要记住,{}里面的参数不一定要写全两个,也可以仅仅写一个,这样代表仅仅匹配指定的字符数,例如\b{6}\b匹配刚刚6个字母的单词。
{n,} 匹配n次或更多次, {5,} 匹配5次以上
十一、括号以及反向引用
前面已经说过括号的两个作用:限制多选项的范围,将若干字符组合为一个单元,受问号或星号之类的量词作用。现在在来说一种括号的用法,分组,此东西具有记忆的功能,即在正则表达式内部仍然能够回忆上次匹配到的是什么。这个东西用语言说不明白,书本上又是画图又是线的,这里仅仅用一个例子:
例子解析:首先说明一下括号里面代表什么意思,
(\b[A-Za-z]+ +) 匹配单词的开始,然后是大小写字母至少1次,然后空格至少1次。说白了就是 空格然后是匹配不区分大小写的一寸字母然后是任意个空格 OK,再来说下\1\b \b当然就是单词的结尾了,那么\1呢?这个就是分组的作用了,\1代表的就是前面括号里面的东西,也就是一个单词。 因此,整个正则表达式的意思是,匹配间隔了N个空格的重复的单词。不懂也没办法了。
十二、神奇的转义
\ 转义符它的作用是使元字符失去它的意义,仅仅代表其日常输入中字符的意义。
例如,我要匹配字符 . 字符* 就需要在前面加反斜杠,\. \*去除它元字符的含义。
一些需要转义的字符列表 \ * + ? | { [ ( ) ^ $ . # 和 空白
十三、一些其他的元字符
\w 匹配字母,汉字,数字,下划线
\W 匹配非字母,非汉字,非数字,非下划线
\s 匹配空白符
\S 匹配非空白符
\d 匹配数字
\D 匹配非数字
转载于:https://www.cnblogs.com/xiaosuibu/p/6744738.html
正则表达式(一) -- 元字符(转)相关推荐
- shell中基本正则表达式的元字符
基本正则表达式的元字符如下: ^:表示行的开始 $:表示行的结束 .:匹配任一个字符 *:匹配0个或者多个先前的字符 []:匹配字符组中的一个 [x-y]:匹配以字符范围组成的字符组中的一个字符 [^ ...
- Linux 正则表达式与元字符
今天继续给大家介绍Linux基础知识,本文主要内容是Linux的正则表达式和元字符. 正则表达式是一种匹配字符串的表达方式,而元字符就是构成正则表达式的基本元素,在Linux中,我们需要经常使用正则表 ...
- java转义字符包括元字符_正则表达式的元字符和转义字符,又及转义字符和ASCII码之间的关系小解...
1.正则表达式的组合 正则表达式由元字符和转义字符组成 元字符有 ^ :断言目标的开始位置(或多行模式下的行首位置) $ :断言目标的介绍位置(或多行模式下的结尾位置) . :匹配除换行符外的其他任何 ...
- Python正则表达式之元字符详解(1)
文章目录 简介 注意: 字符匹配 元字符 [ ] 注意: 反斜杠\ . * + ? {} 简介 正则表达式(Regular expressions 也称为 REs,或 regexes 或 regex ...
- [Regular] 2、正则表达式基础元字符及分组、捕获
分组.捕获.分组不捕获 普通的无特殊意义的括号通常有两种功能:分组和捕获. 捕获型括号的编号是按照括号出现的次序,从左到右计算的.如果提供反向引用,可以在表达式的后 ...
- python与正则表达式(part1)--元字符
本系列BLOG为鄙人学习python时的学习笔记. 文章目录 元字符使用 普通字符 或关系ß(从此知识点开始就是特殊字符了) 匹配单个字符 匹配字符集 匹配字符集反集 匹配字符串开始位置 匹配字符串的 ...
- python正则表达式元字符用法_正则表达式-常用元字符的基本使用
常用元字符有:[] ^ $ \ * + ? {} . python中使用正则表达式需要导入re模块 下面介绍用法 [] 指定一个字符集,[ABC]表示ABC的字符集,[^ABC] 取反, ...
- 正则表达式-正则表达式的元字符
元字符是使用正则表达式不同于普通字符的地方,也是正则表达式能够发挥强大作用.具有强大表达能力的法宝.那么什么是元字符呢?元字符是一些在正则表达式中有特殊用途.不代表它本身字符意义的一组字符.利用元字符 ...
- 学习-Java字符串之正则表达式之元字符之判断字符串是否符合规则
任务描述 本关任务:接收给定的字符串,如果该字符串同时符合以下要求,请输出该字符串. 1.字符串由三个字符组成: 2.字符串以数字开头: 3.字符串以小写字母结束. 相关知识 正则表达式的概念 正则表 ...
最新文章
- 一款全屏图片滑动js 插件 超快捷
- 攻下《JavaScript高级程序设计》——第二章 在HTML中使用JavaScript
- paddlepaddle测试安装_百度paddlepaddle深度学习7日入门-CV疫情特辑心得
- 如何重启_消费市场按下重启键,企业该如何提前布局
- leetcode1319. 连通网络的操作次数
- ten sentences(1-10)
- LeetCode 111. Minimum Depth of Binary Tree (二叉树最小的深度)
- 问答项目---登陆验证码点击切换及异步验证验证码
- 2022秋招笔试备考合集——银行篇(下)|智测优聘出品
- java实现微信定时发送消息
- java实训心得感想30字,java实训心得体会感想
- C# 调用微信接口上传素材和发送图文消息
- linux 串口转网口工具,linux下串口调试工具/串口终端推荐: picocom(转)
- 一键编译安装LAMP环境
- win7系统提示未识别网络无Internet访问,169.254.x.x
- HashMap面试常问问题
- 绝对值不等式的常见形式及解法
- bq24773功能分析(中文手册翻译)
- 基于ThinkPHP开发的企业建站程序完整版源码
- struts1框架基本(笔记)
热门文章
- 10分钟 教你学会Linux/Unix下的vi文本编辑器
- 隐藏右侧“快速启动栏”中的回收站图标及查看所有网站内容
- 定制控件消息处理函数
- 面试题 17.16. 按摩师
- 计算机未来的发展趋势三百字,数字媒体毕业论文5000字_大专毕业论文5000字_计算机类毕业论文5000字文库...
- python生成多个随机数列表_在python中生成1到6之间的6个随机数的列表
- 数据库设计原则与开发规范,你知道多少?
- 日本区块链项目Jasmy与索尼VAIO联合发售笔记本电脑
- SAP License:BSEG与FAGLFLEXA (A)表数据不一致问题
- SAP License:SAP学习笔记