资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
正则表达式入门教程以下内容经正则表达式学习网www.regexbook.net授权=正则表达式是什么? 在使用电脑进行各种文字处理的时候,我们有时需要查找和匹配一些特殊的字符串,如 邮箱地址、验证用户输入的密码是否包含了大小写字母和数字,查找HTML源文档中的所 有web地址等等,这时我们就可以使用到正则表达式。正则表达式本身是一个“字符串”,通过这个“字符串”去描述字符组成规则。如abbb、 abbbb、abbbbb这三个字符串包都是以a字母开头a后面有一个b字母,而且b字母重复了3 到5次。用正则表达式来描述就是ab3,5, b3,5表示b字符重复3到5次。如果我们想匹配 ababab这样的字符串,ab重复了3次,用正则表达式表示就是(ab)3,圆括号()是正则表达 式中的分组。大家如果想亲自感受正则表达式的使用效果,可以打开正则表达式测试系统如以上实例所展示的,正则表达式为人们提供了一种简单易用的字符处理工具。它在目 前主流的文字处理软件中都提供了良好的支持(不仅是编程软件,还有文字处理软件 Uedit32、EditPlus,网页采集软件火车头等等),它具有很强的通用性,学好它,我们可以 达一变应万变的效果。栄正则表达式详解栄像,()这种在正则表达式中,具有特殊含义的字符称为元字符(metacharacter)。元字符 是组成正则表达式的基本元素,在正则表达式经常使用的元字符不是很多,概念容易理解。 大家只要花30来分钟学完我们的教程基本上就可以完全掌握。为了您能更快速的掌握正则表达式,我们为您推荐一款方便的正则表达式在线测试工具 “RegExr, ( RegExr 由 gskinner.com 免费提供)。保留字符匹配字符本身匹配字符数量匹配字符位置分组匹配表达式选项保留字符(返回目录)在正则表达式中,有一些字符在正则表达式中具有特殊含义被称保留字符,如*表示前 一个元素可以重复零次或多次,要匹配“*”字符本身使用*,半角句号匹配除了换行符外 的所有字符,要匹配“”使用。*和中斜杠称为转义符,正则表达式中要匹配保留字符本身时都要加上转义符。同理 要匹配反斜杠自身“”要使用第一个斜杠是转义符,第二个是斜杠本身。匹配字符串“”就为,第一个和第三个斜杠是转义符。保 留 字说明保 留 字说明将下一个字符标记为一个特殊字 符、或一个原义字符、或一个向后 引用、或一个八进制转义符。例如, “n”匹配字符“n”。“n”匹配一个换行 符。序列“”匹配“”而“(”则匹配(。匹配除了换行符(n)以外的任意 一个字符。要匹配小数点本身,请 使用.$匹配输入字符串的结尾位置。要匹配$字符本身,请使用$A匹配输入字符串的开始位置。要匹配A字符本身,请使用A*修饰匹配次数为0次或任意次。要匹配*字符本身,请使用*+修饰匹配次数为至少1次。要匹配+字符本身,请使用+()标记个子表达式的开始和结束位置。要匹配小括号,请使用(和)?修饰匹配次数为0次或1次。要 匹配”?字符本身,请使用?, 当问号放在表达数量的元字符后面 时,匹配模式是非贪婪的。如ad+ 会匹配al23231中的所有字符(贪 婪式下,表达式会尽可能多的匹 配),但改成ad?就只会匹配al了 (非贪婪模式下,表达式会尽可能 少的匹配)。修饰匹配次数的符号。要匹配大括号,请使用和用来自定义能够匹配多种字符 的表达式。要匹配中括号,请使用和|左右两边表达式之间或关系。匹配|本身,请使用|匹配字符本身(返回目录)元字符本身就可以代表了某个具体的字符,如:s可以匹配空格,w可以匹配数字、 字母和下划线,d可以匹配数字,s、w、d如果改成大写的话就可以进行反向匹配S匹 配所有的非空格字符,W匹配所有非单词字符的字符,D匹配除了0-9外的所有字符。 可以匹配取值范围,如abc匹配文本中的a或b或c。正则表达式中不能直接匹配中文字符,必需字符编码形式来进行匹配,女旷中华”这两个 字符的十六进制unicode编码(编码杳看工具)是0x4e2d和0x534e,正则表达式的书写形式 为u4e2d和u534e (亲手试试)。换行符在不同的系统和环境中有所有不,JavaScript测试环境中的换行符是n,而flash 测试环境中的换行符是山,如果我们两行字,第一行的内容一个a字母,第二行的内容是个 b字母,表达式的正确写法是javascript中为anb,而flash中写为arb。如果大家想更多的 了解r与5可以看(n和r详细说明)。元字 符描述表达式匹配举例这是个英文句号,匹配除换行符外(n) 的任意单个字符。a.e“nave” 中的 “ave”“water” 中的 “ate”w匹配单词字符(字母、数字、下划线)。w“ID A1.3” 中的 “I”、“D”、“A”、“1”和“3”W匹配非单词字符(除了字母、数字、下划 线的所有字符)。W“ID A1.3”中的“ ”、:”s匹配单个空白字符。ws“ID A1.3” 中的 “D”S匹配非空白字符。sS“int _ctr” 中的 “ _”d匹配0-9这十个数字中的任意一个。d“4 = IV” 中的 “4”D匹配所有非数字字符。D“4 = IV”中的“ ”、“=”、“ ”、T和“V”ae匹配字符组中的任意一个字符。ae“gray” 中的 “a”“lane” 中的“a”和 “e”Aaei加上A表示反向匹配,意思是除了组内字符外的所有字符都会匹配。Aaei“reign” 中的 “r”、“g”和“n”a-d 方括号内加上“-”这个符号表示 个区间, 如a-d匹配a,b,c,d这4个字符,也可以用 abed 来表示。b-d“abedef”中的 “bed”0匹配null空字符(Unicode编码:0x0000)。n匹配换行符(Unicode编码:0x000A),换行 符n与回车符宜意思不同(n和详细说 明)。rn(w +)“rnThesearentwolines.” 中的 “rnThese”f匹配换页符(Unicode编码:0x000C)。f2, “fff中的 “fffr匹配回车符(Unicode编码:0x000D),回车#r与换行符n意思不同(5和1详细说rn(w +)“rnThesearentwolines.” 中的 “rnThese”明)。t匹配制表符(Unicode编码:0x0009)。(w+) t“itemltitem2t” 中的“itemlt” 和 “item2t”v匹配垂直制表符(Unicode编码:0x000B)。v2, “vvv” 中的 “vvv”xxx匹配以八进制数XXX规定的字符。(字符编码历史和原理详解)w040w“a be d” 中的“a b”和 “cd”xd d匹配以十六进制数dd规定的字符(dd恰好 由2位数字组成)。(字符编码历史和原理详 解)wx20w“a be d” 中的“a b”和 “e d”。uxXXX匹配以十六进制数xxxx规定的Unicode字符(Unicdoe由两个字节组成)。(字符编码历史和原理详解)wu0020w“a be d” 中的“a b”和 “ed”匹配字符数量(返回目录)元字符本身并不匹配字符,而是描述要匹配的字符数量。如:an*可以匹配a、an、annn。 *匹配上一个或一组元素零次或多次。an+可以匹配an、annn,不能匹配a。+匹配上一个或 一组元素1次或多次。an?可以匹配a、an,不能匹配annn。?匹配上一个或一组元素零次或 1次。an3只能匹配annn。3的意思是字符n必需重复3次。元字 符描述表达式匹配举例*匹配上一个元素零次或多次d*.d“.0”,“19.9”和“219.9”+匹配上个元素次或多次be+!been 中的bee,bent 中的be?匹配上一个元素零次或一次rai? nran 或rainn匹配上一个兀素恰好n次。,d 3“1,043.6” 中的 “,043”“9,876,543”中的“,876”、,543n, 匹配上一个兀素至少n次。d2,T66”,“29”和“1930”n, m匹配上一个兀素至少n次,但不 多于m次。d3,5“166”、 “17668”“193024” 中的 “19302”*?匹配上一个兀素零次或多次,但 次数尽可能少。d*?. d“.0”,“19.9”和“219.9”+?匹配上 个元素 次或多次,但 次数尽可能少。be+?“been” 中的 “be”,“bent” 中的 “be”?匹配上一个兀素零次或一次,但 次数尽可能少。rai? n“ran” 和 “rain”n?匹配前导元素恰好n次。,d3?“1,043.6” 中 的 “,043”,“9,876,543,210” 中的 “,876”、“,543” 和“,210”n, ?匹配上一个元素至少n次,但次数尽可能少。d2,?“166”, “29”和“1930”n, m ?匹配上一个元素的次数介于n和m之间,但次数尽可能少。d3,5?“166”、 “17668”“193024”中的“193”、“024”分组匹配(返回目录)正则表达式匹配abcabcabcabc(abc重复了四次)这样的内容时要使用到分组符号“圆括号”,写成(abc)4,如果写成abc4,就只匹配abcccc。同时分组还可以实现非捕获组、先 行断言、在javascrip的replace函数(应用实例)、Apache (web服务器)ULR重写模块等 应用中还可以传递参数(应用实例)。关于先行断言这个概念看起来很复杂,但实际上就是在表达式的左边或右边设置一个匹 配条件,满足条件的表达式才开始匹配,我们来看个实例,如果我们想匹配b:123;b:456 中有所有数字字符串。由于他们都是以b:开头的,所以我们可以使用(v=b:)d+,其中(v=b:) 就是判断的条件(正则表达式中叫先行断言)。元字符描述表达式匹配举例(子表达式)将一个字符串进行组合,参与匹配。(ab)3, 5“ababab”,“abababab”,“aba bababab”(?:子表达式)定义非捕获组。Write( ?:Line) ?“Console.Wr
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号