元字符:/b,单词的开头或结尾,即单词的分界处
例如:要查找出hi这个单词,可用/bhi/b/d,匹配一位数字(如:0,1,2……)
例如:0/d/d-/d/d/d/d/d/d/d/d匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字
也可以写成如下形式:0/d{2}-/d{8}
{2}表示/d重复两次,若是2-5次则可写作{2,5}
常用列表查询:
表1.常用的元字符 代码说明.匹配除换行符以外的任意字符/w匹配字母或数字或下划线或汉字/s匹配任意的空白符/d匹配数字/b匹配单词的开始或结束^匹配字符串的开始$匹配字符串的结束 表2.常用的限定符 代码/语法说明*重复零次或更多次+重复一次或更多次?重复零次或一次{n}重复n次{n,}重复n次或更多次{n,m}重复n到m次 表3.常用的反义代码 代码/语法说明/W匹配任意不是字母,数字,下划线,汉字的字符/S匹配任意不是空白符的字符/D匹配任意非数字的字符/B匹配不是单词开头或结束的位置[^x]匹配除了x以外的任意字符[^aeiou]匹配除了aeiou这几个字母以外的任意字符
不常用列表:
表4.常用分组语法 分类代码/语法说明捕获(exp)匹配exp,并捕获文本到自动命名的组里(? exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)(?:exp)匹配exp,不捕获匹配的文本,也不给此分组分配组号零宽断言(?=exp)匹配exp前面的位置(?<=exp)匹配exp后面的位置(?!exp)匹配后面跟的不是exp的位置(? 匹配前面不是exp的位置注释(?#comment)这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读 表5.懒惰限定符 代码/语法说明*?重复任意次,但尽可能少重复+?重复1次或更多次,但尽可能少重复??重复0次或1次,但尽可能少重复{n,m}?重复n到m次,但尽可能少重复{n,}?重复n次以上,但尽可能少重复 表6.常用的处理选项 名称说明IgnoreCase(忽略大小写)匹配时不区分大小写。Multiline(多行模式)更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配/n之前的位置以及字符串结束前的位置.)Singleline(单行模式)更改.的含义,使它与每一个字符匹配(包括换行符/n)。IgnorePatternWhitespace(忽略空白)忽略表达式中的非转义空白并启用由#标记的注释。ExplicitCapture(显式捕获)仅捕获已被显式命名的组。 表7.尚未详细讨论的语法 代码/语法说明/a报警字符(打印它的效果是电脑嘀一声)/b通常是单词分界位置,但如果在字符类里使用代表退格/t制表符,Tab/r回车/v竖向制表符/f换页符/n换行符/eEscape/0nnASCII代码中八进制代码为nn的字符/xnnASCII代码中十六进制代码为nn的字符/unnnnUnicode代码中十六进制代码为nnnn的字符/cNASCII控制字符。比如/cC代表Ctrl+C/A字符串开头(类似^,但不受处理多行选项的影响)/Z字符串结尾或行尾(不受处理多行选项的影响)/z字符串结尾(类似$,但不受处理多行选项的影响)/G当前搜索的开头/p{name}Unicode中命名为name的字符类,例如/p{IsGreek}(?>exp)贪婪子表达式(? - exp) 平衡组(?im-nsx:exp)在子表达式exp中改变处理选项(?im-nsx)为表达式后面的部分改变处理选项(?(exp)yes|no)把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no(?(exp)yes)同上,只是使用空表达式作为no(?(name)yes|no)如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no(?(name)yes)同上,只是使用空表达式作为no匹配没有预定义元字符的字符集合:[]里面指定了一个字符范围。[0-9]和/d表示的范围是一致的:一位字符。
处理多行时,^和$表示行的开始和结束
IP格式:(1.0.0.1-255.255.255.255)
'/^(([1-9]|([1-9]/d)|(1/d/d)|(2([0-4]/d|5[0-5])))/.)(([1-9]|([1-9]/d)|(1/d/d)|(2([0-4]/d|5[0-5])))/.){2}([1-9]|([1-9]/d)|(1/d/d)|(2([0-4]/d|5[0-5])))$/'
或者是((2[0-4]/d|25[0-5]|[01]?/d/d?)/.){3}(2[0-4]/d|25[0-5]|[01]?/d/d?)
提供一个测试工具:
一个.NET下的工具Regex Tester
本文用 菊子曰发布