正则表达式介绍和例子

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

正则表达式

含义:编写字符串处理的程序或网页时,会有查找符合某复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。它是记录文本规则的代码。

元字符

用来代替字符的符号

注:\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等正则表达式中的空格会当成空格匹配。(输入几个空格就匹配几个)

非打印字符

限定符

重复:表现重复时用的是大括号{}和* + ?,表示范围时用的是中括号[],中括号里面是只选其中一个的组合。表达分组时用圆括号(),一个圆括号表示一个意思。

●字符类[],用来表示取字符的范围区间,用中括号括起来

[0-9]代表\d

[a-z0-9A-Z]表示\w

●分支条件,用|表示或者的关系。

●贪婪与懒惰、最先开始匹配拥有最高优先权

*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

.*表示尽可能匹配多的字符

.*?表示尽可能少的字符

例如:字符串aabab,用贪婪匹配a.*b得到aabab,用懒惰匹配a.*?b得到

定位符

定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达

子表达式分组获取()

●分组,用()把子表达式括起来,给一个组号,后面可以再用

●后向引用,用()定义的分组,可以给它定一个组名,在后面加以利用。

用(?\w+)或者(?’Word’\w+)定义\w+组名为Word,利用方式为

捕获

从下面的例子中可以看到,根据正则表达式,只捕获了括号内的东西到组中,第一个括号前面^\D*匹配到的东西被忽略了。

零宽度断言

(?=exp) 用法:\b\w+(?=ing)\b,匹配以ing结尾的单词的前面部分,如查找I’m singing and dancing,会匹配sing和danc

(?<=exp) 用法:(?<=rea)\w+\b,匹配以rea开头的单词的后面部分,如查找reading a book,会匹配ding

注释:(?#comment)

例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)

反义

反义,找完全相反的内容。注意这里使用的都是大写

平衡组/递归匹配

(?'group')把捕获的内容命名为group,并压入堆栈(Stack)

(?'-group')从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败

(?(group)yes|no)如果堆栈上存在以名为group的捕获内容的话,继续匹配yes 部分的表达式,否则继续匹配no部分

(?!)零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败

<[^<>]*(((?'Open'<)[^<>]*)+((?'-Open'>)[^<>]*)+)*(?(Open)(?!))>

可以从xx aa> yy中找到 aa>

可以找到配对的

,不管有没有不配对的html出现。

好的例子

将所有地址中的ROAD写成RD.

若地址中的字符不是大写的,先可以都改成大写的。

匹配以罗马数字标示的四位数年份

注:在罗马数字上加一个横线,就会乘以1000倍。所以4000就用ⅯⅬ(其中L要带上横线)紧凑正则表达式:

^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$

最后对应的松散正则表达式是

匹配电话号码

紧凑正则表达式:(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$松散正则表达式:

相关文档
最新文档