正则表达式简介_第1页
正则表达式简介_第2页
正则表达式简介_第3页
正则表达式简介_第4页
正则表达式简介_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

©2003iFLYTEKTECHCENTER正则表达式简介平台及嵌入式事业部王道广dgwang@2023年1月13日内容介绍什么是正则表达式何时用正则表达式怎么写正则表达式内容介绍什么是正则表达式何时用正则表达式怎么写正则表达式正则表达式的概念概念用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串RegularExpression的“Regular”一般被译为“正则”、“正规”、“常规”。此处的“Regular”即是“规则”、“规律”的意思,RegularExpression即“描述某种规则的表达式”之意在很多文本编辑器或其他工具里,通常被用来检索或替换那些符合某个模式的文本内容正则表达式的历史历史最初出现于理论计算机科学的自动控制理论和形式化语言理论中Unix工具

编辑器QED,ED;文本工具grep编程语言 Perl Java .Net形式化语言理论形式化语言理论中的正则表达式常量

∅,

{ε},

{a}算子

RS

R|S

R*正则语言 DFA,NFA,图灵机,正则文法,前缀文法不具备的特征

递归内容介绍什么是正则表达式何时用正则表达式怎么写正则表达式非具体内容查找非具体内容的查找查找中文中出现的英文单词,但不具体到某个单词查找代码中的所有注释查找代码中的所有常量值所有满足C语言语法的变量名位置的查找需要确定位置查找所有句首或句尾的单词查找所有后跟ing的单词查找John,但不要Johnson重复若干次不定次重复查找5位以上的数字查找所有连续重复出现的单词“123456”为三个16进制数,每个前面加上一个0x内容之间的联系字符串不同部分之间相互联系查找所有“so…that”格式的从句查找所有后跟数字的单词,但结果不要数字部分

16进制数字“0xab”的数值部分其他应用场景其他用通配符等无法准确或简单描述的规则匹配括号 (a*(b+c))IP地址

内容介绍什么是正则表达式何时用正则表达式怎么写正则表达式多种风格正则表达式有多种不同风格 Perl,Vim,.Net大部分正则表达式的形式都有如下的结构:选择

|表示两个模式之间进行选择;[]表示可选择的字符集合数量限定

?表示0次或一次匹配;*表示0次、1次或多次匹配; +表示1次或多次匹配匹配 ()可以用来定义操作符的范围和优先度PCREPCRE(PerlCompatibleRegularExpression,Perl兼容正则表达式)

常用元字符常用元字符代码

正则表达式“John\b”不能匹配字符串“Johnson”,

正则表达式“John”可以匹配字符串“Johnson”。

字符转义字符转义

正则表达式匹配“.”、“^”、“$”等元字符的时候,前面需要加“\”进行转义。

正则表达式“^d”不能匹配字符串“abc^de”,

正则表达式“\^d”可以匹配字符串“abc^de”。

重复次数重复次数

正则表达式“^\d{6,}”表示一个六位或以上数字。

字符类字符类

自定义的字符集合 [0-9]表示0到9十个数字的集合; [aeiou]表示元音字母集合; [0-9a-zA-Z_]相当于英文环境下的\w。

正则表达式“^0x[0-9a-fA-F]+$”表示十六进制数字。

分枝条件分枝条件

一个模式表示多种规则;

使用“|”把不同规则隔开。

正则表达式“010-\d{8}|021-\d{8}”表示北京或上海地区的8位电话号码。

分组分组(子表达式)

通过“()”指定分组;

可以对分组进行重复次数限定等操作。

正则表达式“010-\d{8}|021-\d{8}”也可写为“(010|022)-\d{8}”;

正则表达式“

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)”表示IP地址。反义反义

不属于某个能简单定义的字符类的字符的集合。

“^\S+$”表示不含空白的非空字符串。

后向引用后向引用

用于重复搜索前面某个分组匹配的文本;

从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2;

\1代表分组1匹配的文本。

“\b(\w+)\b\s+\1\b”可以用来匹配重复的单词,例如“gogo”,“hellohello”。零宽断言零宽断言

(?=exp)叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp;

(?<=exp)叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。

“\d+(?=L)”可以匹配“65535L”中的数值部分;

“(?<=0x)[0-9a-f]+”匹配16进制数字中的数值部分。负向零宽断言负向零宽断言

(?!exp)叫零宽度负预测先行断言,它断言自身出现的位置的后面不能匹配表达式exp;

(?<!exp)叫零宽度负回顾后发断言,它断言自身出现的位置的前面不能匹配表达式exp。

“\w+(?!\.)”可以匹配不是位于末尾的单词;

“(?<!^)\w+”匹配不位于字符串开头的单词。贪婪与懒惰贪婪与懒惰

当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符;

在表示重复的元字符后面加上“?”,即可匹配尽可能少的字符。

“/\*.*?\*/”可以匹配C语言中的注释部分。选项选项i

忽略大小写m

多行模式s

单行模式x

忽略模式中的空白常用正则表达式常用正则表达式电子邮件 ^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$URL ^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w\.-]*)*\/?$HTML标签 ^<(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论