`
raywithu
  • 浏览: 24684 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

正则表达式基础知识

 
阅读更多
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。如:
<wbr>JScript </wbr><wbr><b><wbr>VBScript</wbr></b><wbr><b><wbr>匹配</wbr></b><wbr><br>/^/[ /t]*$/ "^/[ /t]*$" 匹配一个空白行。 <br>//d{2}-/d{5}/ "/d{2}-/d{5}" <font size="2"><font style="FONT-SIZE: x-small; LINE-HEIGHT: 1.3em">验证一个ID 号码是否由一个2位数字,</font><wbr><br><font style="FONT-SIZE: x-small; LINE-HEIGHT: 1.3em">一个连字符以及一个5位数字组成。</font><wbr></wbr></wbr></font> <br>/&lt;(.*)&gt;.*&lt;///1&gt;/"&lt;(.*)&gt;.*&lt;///1&gt;"匹配一个 HTML 标记。 <br><br>下表是元字符及其在正则表达式上下文中的行为的一个完整列表:<br><br><b><wbr><font style="LINE-HEIGHT: 1.3em" color="#ff0000">字符</font><wbr></wbr></wbr></b><wbr><b><wbr>描述</wbr></b><wbr><br>/<br>将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'/n' 匹配一个换行符。序列 '//' 匹配 "/" 而 "/(" 则匹配 "("。 <br>^ <br>匹配输入字符串的开始位置。如果设置了 <b><wbr>RegExp</wbr></b><wbr> 对象的 <b><wbr>Multiline</wbr></b><wbr> 属性,^ 也匹配 '/n' 或 '/r' 之后的位置。 <br>$ <br>匹配输入字符串的结束位置。如果设置了<b><wbr>RegExp</wbr></b><wbr> 对象的 <b><wbr>Multiline</wbr></b><wbr> 属性,$ 也匹配 '/n' 或 '/r' 之前的位置。 <br>* <br>匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 <br>+ <br>匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 <br>? <br>匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 <br>{<i><wbr>n</wbr></i><wbr>} <br><i><wbr>n</wbr></i><wbr> 是一个非负整数。匹配确定的 <i><wbr>n</wbr></i><wbr> 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 <br>{<i><wbr>n</wbr></i><wbr>,} <br><i><wbr>n</wbr></i><wbr> 是一个非负整数。至少匹配<i><wbr>n</wbr></i><wbr> 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 <br>{<i><wbr>n</wbr></i><wbr>,<i><wbr>m</wbr></i><wbr>} <br><i><wbr>m</wbr></i><wbr> 和 <i><wbr>n</wbr></i><wbr> 均为非负整数,其中<i><wbr>n</wbr></i><wbr> &lt;= <i><wbr>m</wbr></i><wbr>。最少匹配 <i><wbr>n</wbr></i><wbr> 次且最多匹配 <i><wbr>m</wbr></i><wbr> 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 <br>? <br>当该字符紧跟在任何一个其他限制符 (*, +, ?, {<i><wbr>n</wbr></i><wbr>}, {<i><wbr>n</wbr></i><wbr>,}, {<i><wbr>n</wbr></i><wbr>,<i><wbr>m</wbr></i><wbr>}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。 <br>. <br>匹配除 "/n" 之外的任何单个字符。要匹配包括 '/n' 在内的任何字符,请使用象 '[./n]' 的模式。 <br>(<i><wbr>pattern</wbr></i><wbr>) <br>匹配 <i><wbr>pattern</wbr></i><wbr> 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 <b><wbr>SubMatches</wbr></b><wbr> 集合,在JScript 中则使用 <b><wbr>$0</wbr></b><wbr>…<b><wbr>$9</wbr></b><wbr> 属性。要匹配圆括号字符,请使用 '/(' 或 '/)'。 <br>(?:<i><wbr>pattern</wbr></i><wbr>) <br>匹配 <i><wbr>pattern</wbr></i><wbr> 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 <br>(?=<i><wbr>pattern</wbr></i><wbr>) <br>正向预查,在任何匹配 <i><wbr>pattern</wbr></i><wbr> 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 <br>(?!<i><wbr>pattern</wbr></i><wbr>) <br>负向预查,在任何不匹配 <i><wbr>pattern</wbr></i><wbr> 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 <br><i><wbr>x</wbr></i><wbr>|<i><wbr>y</wbr></i><wbr><br>匹配 <i><wbr>x</wbr></i><wbr> 或 <i><wbr>y</wbr></i><wbr>。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 <br>[<i><wbr>xyz</wbr></i><wbr>] <br>字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 <br>[^<i><wbr>xyz</wbr></i><wbr>] <br>负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 <br>[<i><wbr>a-z</wbr></i><wbr>] <br>字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。 <br>[^<i><wbr>a-z</wbr></i><wbr>] <br>负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。 <br>/b <br>匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er/b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 <br>/B <br>匹配非单词边界。'er/B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 <br>/c<i><wbr>x</wbr></i><wbr><br>匹配由 <i><wbr>x</wbr></i><wbr> 指明的控制字符。例如, /cM 匹配一个 Control-M 或回车符。<i><wbr>x</wbr></i><wbr> 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 <br>/d <br>匹配一个数字字符。等价于 [0-9]。 <br>/D <br>匹配一个非数字字符。等价于 [^0-9]。 <br>/f <br>匹配一个换页符。等价于 /x0c 和 /cL。 <br>/n <br>匹配一个换行符。等价于 /x0a 和 /cJ。 <br>/r <br>匹配一个回车符。等价于 /x0d 和 /cM。 <br>/s <br>匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ /f/n/r/t/v]。 <br>/S <br>匹配任何非空白字符。等价于 [^ /f/n/r/t/v]。 <br>/t <br>匹配一个制表符。等价于 /x09 和 /cI。 <br>/v <br>匹配一个垂直制表符。等价于 /x0b 和 /cK。 <br>/w <br>匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 <br>/W <br>匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 <br>/x<i><wbr>n</wbr></i><wbr><br>匹配 <i><wbr>n</wbr></i><wbr>,其中 <i><wbr>n</wbr></i><wbr> 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'/x41' 匹配 "A"。'/x041' 则等价于 '/x04' &amp; "1"。正则表达式中可以使用 ASCII 编码。. <br>/<i><wbr>num</wbr></i><wbr><br>匹配 <i><wbr>num</wbr></i><wbr>,其中 <i><wbr>num</wbr></i><wbr> 是一个正整数。对所获取的匹配的引用。例如,'(.)/1' 匹配两个连续的相同字符。 <br>/<i><wbr>n</wbr></i><wbr><br>标识一个八进制转义值或一个向后引用。如果 /<i><wbr>n</wbr></i><wbr> 之前至少 <i><wbr>n</wbr></i><wbr> 个获取的子表达式,则 <i><wbr>n</wbr></i><wbr> 为向后引用。否则,如果 <i><wbr>n</wbr></i><wbr> 为八进制数字 (0-7),则 <i><wbr>n</wbr></i><wbr> 为一个八进制转义值。 <br>/<i><wbr>nm</wbr></i><wbr><br>标识一个八进制转义值或一个向后引用。如果 /<i><wbr>nm</wbr></i><wbr> 之前至少有 <i><wbr>nm</wbr></i><wbr> 个获得子表达式,则 <i><wbr>nm</wbr></i><wbr> 为向后引用。如果 /<i><wbr>nm</wbr></i><wbr> 之前至少有 <i><wbr>n</wbr></i><wbr> 个获取,则 <i><wbr>n</wbr></i><wbr> 为一个后跟文字 <i><wbr>m</wbr></i><wbr> 的向后引用。如果前面的条件都不满足,若 <i><wbr>n</wbr></i><wbr> 和 <i><wbr>m</wbr></i><wbr> 均为八进制数字 (0-7),则 /<i><wbr>nm</wbr></i><wbr> 将匹配八进制转义值 <i><wbr>nm</wbr></i><wbr>。 <br>/<i><wbr>nml</wbr></i><wbr><br>如果 <i><wbr>n</wbr></i><wbr> 为八进制数字 (0-3),且 <i><wbr>m</wbr></i><wbr> 和 <i><wbr>l</wbr></i><wbr> 均为八进制数字 (0-7),则匹配八进制转义值 <i><wbr>nml</wbr></i><wbr><i><wbr>。</wbr></i><wbr><br>/u<i><wbr>n</wbr></i><wbr><br>匹配 <i><wbr>n</wbr></i><wbr>,其中 <i><wbr>n</wbr></i><wbr> 是一个用四个十六进制数字表示的 Unicode 字符。例如, /u00A9 匹配版权符号 (?)。 <br><br>下面看几个例子: <br>"^The":表示所有以"The"开始的字符串("There","The cat"等); <br>"of despair$":表示所以以"of despair"结尾的字符串; <br>"^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了; <br>"notice":表示任何包含"notice"的字符串。 <br><br>'*','+'和'?'这三个符号,表示一个或一序列字符重复出现的次数。它们分别表示“没有或 <br>更多”,“一次或更多”还有“没有或一次”。下面是几个例子: <br>"ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……); <br>"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多; <br>"ab?":表示一个字符串有一个a后面跟着零个或者一个b; <br>"a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。 <br>也可以使用范围,用大括号括起,用以表示重复次数的范围。 <br>"ab{2}":表示一个字符串有一个a跟着2个b("abb"); <br>"ab{2,}":表示一个字符串有一个a跟着至少2个b; <br>"ab{3,5}":表示一个字符串有一个a跟着3到5个b。 <br>请注意,你必须指定范围的下限(如:"{0,2}"而不是"{,2}")。还有,你可能注意到了,'*','+'和 <br>'?'相当于"{0,}","{1,}"和"{0,1}"。 <br>还有一个'|',表示“或”操作: <br>"hi|hello":表示一个字符串里有"hi"或者"hello"; <br>"(b|cd)ef":表示"bef"或"cdef"; <br>"(a|b)*c":表示一串"a""b"混合的字符串后面跟一个"c"; <br>'.'可以替代任何字符: <br>"a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字; <br>"^.{3}$":表示有任意三个字符的字符串(长度为3个字符); <br>方括号表示某些字符允许在一个字符串中的某一特定位置出现: <br>"[ab]":表示一个字符串有一个"a"或"b"(相当于"a|b"); <br>"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a|b|c|d"或者"[abcd]"); <br>"^[a-zA-Z]":表示一个以字母开头的字符串; <br>"[0-9]%":表示一个百分号前有一位的数字; <br>",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。 <br>你也可以在方括号里用'^'表示不希望出现的字符,'^'应在方括号里的第一位。(如:"%[^a-zA-Z]%"表 <br>示两个百分号中不应该出现字母)。 <br>为了逐字表达,必须在"^.$()|*+?{/"这些字符前加上转移字符'/'。 <br>请注意在方括号中,不需要转义字符。<img id="paperPicArea1" style="DISPLAY: none; POSITION: relative" src="http://edu.imgcache.qq.com/ac/b.gif"></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
评论

相关推荐

    正则表达式的基础知识!

    以下是对正则表达式基础知识的详细解释: 1. **基础匹配**: - **基础匹配**:最简单的正则表达式就是你要匹配的文本本身,如"cat",可以匹配含有"cat"的字符串。 2. **句点符号(.)**: - **句点符号**:"....

    正则表达式 基础知识 一张纸

    ### 正则表达式基础知识详解 正则表达式(Regular Expression)是一种强大的文本处理工具,在数据提取、格式验证以及文本搜索替换等场景中发挥着关键作用。本文将深入解析正则表达式的各种元字符、量词、锚点、字符...

    C#正则表达式基础知识

    在C#编程语言中,正则表达式是一种强大的文本处理工具,它允许程序员通过模式匹配来...通过文档《正则表达式基础知识.doc》和《全面剖析C#正则表达式.doc》的学习,可以深入理解并掌握C#正则表达式的各种用法和技巧。

    精通正则表达式(第三版)简体中文版

    ### 正则表达式基础知识与应用 #### 一、正则表达式的定义及用途 正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助用户查找、替换以及操作特定的字符串或字符组合。它在多种编程语言和操作...

    正则表达式测试工具C#版(src)

    1. **C#中的正则表达式基础** - `System.Text.RegularExpressions`命名空间:C#中的正则表达式操作主要基于这个命名空间下的类和方法。 - `Regex`类:这是处理正则表达式的核心类,提供了多种与正则相关的静态方法...

    正则表达式基础知识与常用类型

    通过理解并熟练应用这些正则表达式基础知识和类型,你可以高效地处理字符串数据,进行复杂的文本分析和信息提取任务。在实际编程中,结合 Jakarta-ORO 或其他类似的库,可以极大地提高文本处理的灵活性和效率。

    PHP正则表达式基础知识

    ### PHP正则表达式基础知识详解 正则表达式是一种强大的文本匹配工具,广泛应用于各种编程语言中,包括PHP。在日常开发中,正则表达式能够帮助我们进行字符串搜索、替换以及提取等操作,尤其在数据验证、文本解析等...

    java/Android 正则表达式详解

    正则表达式基础知识 ------------------- 正则表达式是一种字符构成的串,它定义了一个用来搜索匹配字符串的模式。许多语言,包括 Perl、PHP、Python、JavaScript 和 JScript,都支持用正则表达式处理文本。 句点...

    正则表达式.docx

    正则表达式基础知识点 正则表达式是开发人员经常使用的技术之一,它可以帮助开发人员处理各种字符串相关的问题。然而,许多开发人员对正则表达式的理解和使用存在一定的困难。这篇文章将会详细介绍正则表达式的基础...

    javascript正则表达式基础知识入门.docx

    ### JavaScript正则表达式基础知识入门 #### 正则表达式的概念与作用 正则表达式是一种强大的文本处理工具,能够帮助开发者实现对字符串的操作:如替换、从文本中取出符合某些特性的数据等。在JavaScript中,正则...

    正则表达式工具(附正则表达式知识、示例)

    一、正则表达式基础知识 1. 基本元素: - 字符:匹配自身,如"a"匹配字符"a"。 - 范围字符:如[a-z],匹配任何小写字母。 - 通配符:.,匹配任意单个字符。 - 量词:*、+、?,分别代表零或多个、一个或多个、零...

    常用java正则表达式

    #### 二、正则表达式基础知识 ##### 2.1 句点符号 句点符号(`.`)是正则表达式中最基础的元素之一,它代表任意单个字符。例如,`t.n`可以匹配所有以`t`开头、以`n`结尾且中间只有一个字符的字符串,如`tan`、`ten`...

    Java使用正则表达式提取XML节点内容的方法示例

    但是,正则表达式也是一种非常复杂的技术,需要开发者具备一定的基础知识和经验。 为了帮助开发者更好地掌握Java正则表达式技术,我们提供了一系列的Java正则表达式技巧大全,包括《Java正则表达式技巧大全》、...

    正则表达式 正则表达式资料 正则表达式教程

    ### 一、正则表达式基础知识 #### 1.1 什么是正则表达式? 正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助用户或程序查找、替换或提取字符串中的模式。它广泛应用于各种编程语言和软件工具中...

    正则表达式速查 正则表达式举例 正则表达式学习

    ### 正则表达式基础知识与应用详解 #### 一、正则表达式简介 正则表达式(Regular Expression)是一种强大的文本处理工具,能够帮助我们完成对字符串的搜索、替换等操作。它广泛应用于各种编程语言中,如JavaScript...

    正则表达式自动生成器 V2.0.0.1 官方多语版

    5. **教程和帮助文档**:通常,软件会附带详细的使用说明或教程,帮助用户学习和理解正则表达式的基础知识和高级技巧。 压缩包内的`regexBuilderSetup_std.exe`是安装程序,用户可以通过运行这个文件来安装正则...

Global site tag (gtag.js) - Google Analytics