正则表达式应用总结

正则表达式:由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
非打印字符:
\cx:匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f:匹配一个换页符。
\n:匹配一个换行符。
\r:匹配一个回车符。
\t:匹配一个制表符。
\v:匹配一个垂直制表符。
\s:匹配任何空白字符,包括空格、制表符、换页符等等。
\S:匹配任何非空白字符。
\d:匹配所有数字字符。
\w: 匹配所有的字母、数字、下划线以外的字符。
\b:匹配非单词边界,即左右两边都是 "\w" 范围或者左右两边都不是 "\w" 范围时的字符缝隙
.:小数点可以匹配除了换行符(\n)以外的任意一个字符

注:在表达式 "\s","\d","\w","\b" 表示特殊意义的同时,对应的大写字母表示相反的意义

特殊字符
所谓特殊字符,就是一些有特殊含义的字符。
许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符\ 放在它们前面。下表列出了正则表达式中的特殊字符:
$: 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 $。
( ):标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。
+:匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
*:匹配前面的子表达式零次或多次。要匹配\ * 字符,请使用 \*。
.:匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
[:标记一个中括号表达式的开始。要匹配 [,请使用 \[。
?: 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\:将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\' 匹配 "",而 '(' 则匹配 "("。
^:匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 ^。
{:标记限定符表达式的开始。要匹配 {,请使用 \{。
|: 指明两项之间的一个选择。要匹配 |,请使用 \|。

注:正则表达式中的特殊符号,如果被包含于中括号中,则失去特殊意义,但 \ [ ] : ^ - 除外。

标准字符集合,除小数点(.)外,如果被包含于中括号中,自定义字符集合将包含该集合。
比如:[\d.-+],将可以匹配数字,小数点和 + - 符号。(小数点和 + 号失去特殊意义)

用减号相连的 2 个普通字符,自定义字符集合将包含该范围。
比如:[\dA-Fa-f],将可以匹配 0 - 9, A - F, a - f。

限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。
: 匹配前面的子表达式零次或多次。例如,zo 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+:匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
?:匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等价于 {0,1}。
{n}:n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,}:n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m}: m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

转义字符 \Q...\E
使用 \Q 开始,\E 结束,可使中间的标点符号失去特殊意义,将中间的字符作为普通字符。
列:\Q(a+b)3\E 可匹配文本 "(a+b)3"。
使用 \U 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的小写字母转换成大写。在大小写敏感模式下,只能与大写文本匹配。

使用 \L 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的大写字母转换成小写。在大小写敏感模式下,只能与小写文本匹配。

正则式与字符串函数的区别:对于同样的功能,正则表达式函数运行要低于字符串函数,所以如果应用程序够简单,那么就用字符串表达式,但是对于可以通过单个正则式执行的任务,如果需要使用多个字符串函数,ze首选正则式
补充

PHP中正则函数使用区别:
ereg()函数 有区分大小写的功能,而eregi()函数与大小写无关;preg_match 相比ereg更加规范,执行效率越高;preg_match与preg_match_all区别是preg_match只匹配一次,而preg_match_all全部匹配,直到字符串结束。

javascript中使用:
RegExp对象的属性分为静态属性和实例属性。
一 静态属性
RegExp对象的静态属性包含:input、multiline、lastMatch、lastParen、leftContext、rightContext以及从$1到$9。input和multiline属性能被预设。
1 index属性:是当前表达式模式首次匹配内容的开始位置,从0开始计数。其初始值为1,每次成功匹配时,index属性都会随之改变。
2 input属性。返回当前所作用的字符串,可以简写为$_,初始值为空字符串""。
3 lastIndex属性:是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数,常被作为继续搜索时的起始位置,初始值为1,表示从起始位置开始搜索,每次成功匹配时,lastIndex属性值都会随之改变。
4 lastMatch属性:是当前表达式模式的最后一个匹配字符串,可以简写为$&。其初始值为空字符串""。在每次成功匹配时,lastMatch属性值都会随之改变。
5 lastParen属性:如果表达式模式中有括起来的子匹配,是当前表达式模式中最后的子匹配所匹配到的子字符串,可以简写为$+。其初始值为空字符串""。每次成功匹配时,lastParen属性值都会随之改变。
6 leftContext属性:是当前表达式模式最后一个匹配字符串左边的所有内容,可以简写为$`(其中“'”为键盘上“Esc”下边的反单引号)。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。
7 rightContext属性:是当前表达式模式最后一个匹配字符串右边的所有内容,可以简写为$’。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。
8 $1…$9属性:这些属性是只读的。如果表达式模式中有括起来的子匹配,$1…$9属性值分别是第1个到第9个子匹配所捕获到的内容。如果有超过9个以上的子匹配,$1…$9属性分别对应最后的9个子匹配。在一个表达式模式中,可以指定任意多个带括号的子匹配,但RegExp对象只能存储最后的9个子匹配的结果。在RegExp实例对象的一些方法所返回的结果数组中,可以获得所有圆括号内的子匹配结果。

二 实例属性
RegExp的实例有几个只读的属性,包括global表示是否为全局匹配;igoreCase表示是否忽略大小写;multiline表示是否为多行匹配;source是正则式的源文本。如/[ab]/g的源文本就是[ab]。
1 global属性:返回创建RegExp对象实例时指定的global标志(g)的状态。如果创建RegExp对象实例时设置了g标志,该属性返回true,否则返回false,默认值为false。
2 ignoreCase属性:返回创建RegExp对象实例时指定的ignoreCase标志(i)的状态。如果创建RegExp对象实例时设置了i标志,该属性返回true,否则返回false,默认值为false。
3 multiLine属性:返回创建RegExp对象实例时指定的multiLine标志(m)的状态。如果创建RegExp对象实例时设置了m标志,该属性返回true,否则返回false,默认值为false。
4 source属性:返回创建RegExp对象实例时指定的表达式文本字符串。

你可能感兴趣的:(正则表达式应用总结)